C# C-如何在列表中添加所有system.drwaing.color项?

C# C-如何在列表中添加所有system.drwaing.color项?,c#,list,random,colors,C#,List,Random,Colors,我正在尝试用system.drwaing.color项填充列表,以选择随机颜色并将其设置为backColor 这是我的密码: List<Color> myList = new List<Color>(); //rc.Add(Color.Chartreuse); //rc.Add(Color.DeepSkyBlue); //rc.Add(Color.MediumPurple); foreach (Color clr in System

我正在尝试用system.drwaing.color项填充列表,以选择随机颜色并将其设置为backColor

这是我的密码:

    List<Color> myList = new List<Color>();
    //rc.Add(Color.Chartreuse);
    //rc.Add(Color.DeepSkyBlue);
    //rc.Add(Color.MediumPurple);
    foreach (Color clr in System.Drawing.Color)
    {
      //error  
    }
    Random random = new Random();
    Color color = myList[random.Next(myList.Count - 1)];
    this.BackColor = color;
错误: “System.Drawing.Color”是一个“类型”,在给定上下文中无效

有人能帮我一下吗?

来自:

List colorList=ColorStructList

这是您的代码:

private List<Color> GetAllColors()
{
    List<Color> allColors = new List<Color>();

    foreach (PropertyInfo property in typeof(Color).GetProperties())
    {
        if (property.PropertyType == typeof(Color))
        {
            allColors.Add((Color)property.GetValue(null));
        }
    }

    return allColors;
}

根据Artxzta的回答,在VB.net中:

Imports System.Reflection

Dim allColors As New List(Of String)

For Each [property] As PropertyInfo In GetType(Colors).GetProperties()
        allColors.Add([property].Name)
Next

我的设想如下,我希望有人会觉得它有用:

我在wpf窗口中有一个ComboBox控件,我想显示笔刷类中的所有颜色

MainWindow.xaml

在窗口声明中,我添加了以下引用:

 xmlns:converters="clr-namespace:MyProjectName.Converters"
在Window.Resources部分中,我已使用ColorConverter名称注册转换器:

 <converters:StringToColorConverter x:Key="ColorConverter"/>
一些提示

在ComboBox.ItemTemplate绑定中,您将找到绑定到绑定路径=。 =>由于颜色列表不是对象列表而是字符串列表,因此绑定路径=。是将控件绑定到字符串名称的方法

还有。。。 将te ComboBox HorizontalContentAlignment=Stretch设置为将矩形拉伸到ComboBox宽度…尝试查看差异

继续编码,
JJ

看看他的代码示例的上下文。他想用Drawing.Color而不是System.String填充数组。
Imports System.Reflection

Dim allColors As New List(Of String)

For Each [property] As PropertyInfo In GetType(Colors).GetProperties()
        allColors.Add([property].Name)
Next
 xmlns:converters="clr-namespace:MyProjectName.Converters"
 <converters:StringToColorConverter x:Key="ColorConverter"/>
<ComboBox Grid.Column="1" Grid.Row="3" ItemsSource="{Binding VBColors}"
 Margin="5,5,0,5" HorizontalContentAlignment="Stretch">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <Rectangle Height="20" Fill="{Binding Path=., Converter={StaticResource ColorConverter}}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
 private List<string> _vbColors =  typeof(Brushes).GetProperties().Select(x => x.Name).ToList();
 public List<string> VBColors
 { get { return _vbColors; } }
    [ValueConversion(typeof(bool), typeof(SolidColorBrush))]
    public sealed class StringToColorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var stringValue = (string)value;
            SolidColorBrush solidColor = (SolidColorBrush)new BrushConverter().ConvertFromString(stringValue);
            return solidColor;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }