/ / ¿Cuadro combinado Winforms que contiene nombres de colores del sistema? - winforms, cuadro combinado, selector de color

¿Winforms combobox que contiene nombres de colores del sistema? - Winforms, combobox, selector de color

¿Cuál es la forma más fácil de enumerar los nombres de colores de dibujo del sistema en un cuadro combinado? (No necesitamos un selector de color completo o para ver cualquier color, solo los nombres de color en blanco y negro)

Respuestas

5 para la respuesta № 1

Algo como esto:

ComboBox combo = new ComboBox();
foreach (KnownColor knownColor in Enum.GetValues(typeof(KnownColor)))
{
Color color = Color.FromKnownColor(knownColor);
if (!color.IsSystemColor)
{
combo.Items.Add(color);
}
}

los !color.IsSystemColor la verificación excluye los "colores" que Windows usa para varios elementos de la interfaz de usuario (por ejemplo, Menú, WindowFrame).


1 para la respuesta № 2

Puede usar linq así para llenar el cuadro combinado:

var colorComboBox = new ComboBox();

colorComboBox.DataSource = Enum.GetValues(typeof (KnownColor))
.Cast<KnownColor>()
.Where(c => !Color.FromKnownColor(c).IsSystemColor)
.Select(kc => Enum.GetName(typeof (KnownColor), kc))
.ToList();

Luego puede seleccionar el color usando:

colorComboBox.Text = "AliceBlue";