【问题标题】:Get all Definitions at once in c# [duplicate]在c#中一次获取所有定义[重复]
【发布时间】:2017-05-16 19:13:03
【问题描述】:

在 CMD 语言中,您可以一次定义所有内容,例如:del C:\randomfiles\* 这意味着您一次选择所有文件。我有代码var names = new List<System.Drawing.Color> { Red, DarkRed, 1000 colors later... };,但我不想提供所有颜色,因为这可能需要数年时间......我怎样才能像在 CMD 语言中那样一次定义所有颜色? 编辑:这与:How do I enumerate an enum? 不同,因为我想要所有颜色的列表,而不需要花费数年时间编写所有颜色......

【问题讨论】:

  • 我想在不编写大量代码的情况下列出所有颜色,因为有超过 100 种颜色。
  • 你使用了一个不恰当的例子,使用了错误的术语,来问一些不相关的事情。您的问题与“如何检索所有已定义颜色的列表”无关?
  • 如果只需要随机颜色则不需要列表stackoverflow.com/questions/5805774/…
  • 我的错误,它不是枚举 - 但有一个完全相同的问题。 (但你在编辑中的推理是错误的——它不是重复的,因为System.Drawing.Color 不是一个枚举,而不是因为你想要一个列表而不把它们全部写出来......)

标签: c#


【解决方案1】:

要创建所有颜色的列表,您可以使用类似这样的方法

List<Color> allColors = new List<Color>();
foreach (KnownColor col in Enum.GetValues(typeof(KnownColor)))
{
    Color c = Color.FromKnownColor(col);
    if(!c.IsSystemColor)
        allColors.Add(c);
}   

KnownColor 是一个枚举,这将允许我们使用简单的 foreach 遍历所有定义。

当然,如果您还想要系统颜色(WindowText、ControlText 等),请取消选中 IsSystemColor

【讨论】:

  • 它给了我错误:The Type "System.Collections.Generic.List &lt;System.Drawing.Color&gt;" can not be implicitly converted to "System.Drawing.Color".
  • 嗯,你确定吗?刚刚在LinqPad中检查了这个,上面的代码中没有这样的错误。
  • button1.ForeColor = allColors; 给出错误
  • 您应该为 ForeColor 分配一种颜色,而不是整个列表。您似乎没有很好地解释您要在这里做什么。
  • 呃我忘记了这个代码对不起int indexpick = randomcolor.Next(allColors.Count); var name = allColors[indexpick];现在它工作了谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多