¿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 № 1Algo 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";