Поле со списком Winforms, содержащее системные имена цветов? - PullRequest
1 голос
/ 15 марта 2011

Какой самый простой способ перечислить названия цветов системного чертежа в выпадающем списке?(нам не нужен полноценный палитра цветов или чтобы увидеть какую-либо раскраску, только названия цветов в черно-белом)

Ответы [ 2 ]

5 голосов
/ 15 марта 2011

Примерно так:

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

Проверка !color.IsSystemColor исключает «цвета», которые Windows использует для различных элементов пользовательского интерфейса (например, Menu, WindowFrame).

1 голос
/ 15 октября 2013

Вы можете использовать linq так, чтобы заполнить ComboBox:

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();

Затем вы можете выбрать цвет, используя:

colorComboBox.Text = "AliceBlue";
...