1

事前定義されたすべての色を自分のにロードしたいlistBox。フォントにも同じものを使っていますが、色がわかりません。つまり、既知のすべての色を列挙する方法がわかりません。

foreach (FontFamily F in Fonts.SystemFontFamilies)
        {
            ListBoxItem l = new ListBoxItem();
            l.Content = F.ToString();
            l.FontFamily = F;
            listbox1.Items.Add(l);
        }

同じことをする方法はColor

4

4 に答える 4

2

あなたはKnownColorから色を取ることができます

KnownColor[] colors  = Enum.GetValues(typeof(KnownColor));
foreach(KnownColor knowColor in colors)
{
  Color color = Color.FromKnownColor(knowColor);

    ListBoxItem listItem = new ListBoxItem();
    listItem.Content = color.ToString();
    listItem.Color = color ;
    listbox1.Items.Add(listItem);
}

これは、色を取得するための例です。

于 2012-10-04T04:50:14.613 に答える
2

Colorは構造体であるため、の範囲内にないため、次のIEnumerableようにする必要があります。

    foreach (Color color in Enum.GetValues(typeof(KnownColor))
    {
        ListBoxItem l = new ListBoxItem();
        l.Content = color.Name;
        l.Color = color;
        listbox1.Items.Add(l);
    }
于 2012-10-04T00:31:16.850 に答える
1
    var colorProperties = Colors.GetType().GetProperties(BindingFlags.Static | BindingFlags.Public);
    var colors = colorProperties.Select(prop => (Color)prop.GetValue(null, null));
    foreach(Color c in colors)
    {
        ListBoxItem l = new ListBoxItem();
        l.Content = c.ToString();
        l.Color = c;
        listbox1.Items.Add(l);
    }
于 2012-10-04T00:54:39.037 に答える
1

これも試すことができます

記事へのリンク

private List finalColorList()
{ 
    string[] allColors = Enum.GetNames(typeof(System.Drawing.KnownColor));
    string[] systemEnvironmentColors = 
        new string[(
        typeof(System.Drawing.SystemColors)).GetProperties().Length];

    int index = 0;

    foreach (MemberInfo member in (
        typeof(System.Drawing.SystemColors)).GetProperties())
    {
        systemEnvironmentColors[index ++] = member.Name;            
    }

    List finalColorList =  new List();

    foreach (string color in allColors)
    {
        if (Array.IndexOf(systemEnvironmentColors, color) < 0)
        {
            finalColorList.Add(color);
        }                           
    }
    return finalColorList;
}
于 2012-10-04T04:09:11.877 に答える