【问题标题】:how to access color from array如何从数组中访问颜色
【发布时间】:2014-06-04 03:33:31
【问题描述】:

我正在尝试访问数组中列出的颜色,但不知道如何访问,我在 google 上搜索但没有找到帮助内容。

protected void DropDownList7_SelectedIndexChanged(object sender, EventArgs e)
    {
       string[] color=new string[] {"Azure","BlanchedAlmond","Black","Beige","DarkGreen","DarkKhaki","DarkOrange"}
        for(int i=0 ;i<color.Length;i++)
        {
            if(DropDownList7.SelectedIndex==i)
                Label11.ForeColor=Color.?;
        }
    }

如何从颜色数组中获取颜色以使用它。

Label11.ForeColor=Color.?;

【问题讨论】:

  • 如果您收到该错误说明您没有使用我的代码,请仔细检查我的代码。我使用的是Color[] colors 而不是string[] color,也不要编辑答案的错误,只需在它们下方评论

标签: c# asp.net arrays colors


【解决方案1】:

将颜色存储为Color 对象,然后您可以轻松访问它,否则您可能需要使用Color.FromName 方法。

protected void DropDownList7_SelectedIndexChanged(object sender, EventArgs e)
{
    Color[] colors=new Color[] {Color.Azure, Color.BlanchedAlmond,...};
    for(int i=0 ;i<colors.Length;i++)
    {
        if(DropDownList7.SelectedIndex==i)
            Label11.ForeColor=colors[i];
    }
}

刚刚注意到,您正在遍历数组并找到可以轻松重写为的索引

if(DropDownList7.SelectedIndex >=0 == DropDownList7.SelectedIndex < colors.Length)
    Label11.ForeColor=colors[DropDownList7.SelectedIndex];

【讨论】:

  • +1 来自我,这是最好的解决方案:只是不要使用字符串
【解决方案2】:

使用方法FromName如下...

Label11.ForeColor=Color.FromName(color[i]);

但是,我建议将颜色存储在System.Drawing.Color 的数组中,而不是魔术字符串中。或者可能存储它们的十六进制表示,例如“#000000”

【讨论】:

    【解决方案3】:
    var color = Color.FromName("Gold");
    

    在你的情况下

    var color = Color.FromName(color[DropDownList7.SelectedIndex]);
    

    【讨论】:

      【解决方案4】:

      试试

      label1.ForeColor = color[selectedIndex];
      

      如果您只是想要与所选下拉列表相对应的偏移量。

      【讨论】:

      • 考虑到这是在这种情况下正确设置颜色的有效方法,请在否决时发表评论。
      • -1 原因很简单。这行代码永远不会编译,因为color 是一个字符串数组,而ForeColor 属性是struct...结构和字符串之间没有隐式转换。至少不在 .NET Framework 中
      猜你喜欢
      • 2020-07-21
      • 2020-10-23
      • 2020-02-23
      • 2021-09-06
      • 1970-01-01
      • 2021-03-21
      • 2012-10-22
      • 2014-12-26
      • 2018-11-05
      相关资源
      最近更新 更多