使用c#按颜色名称或颜色代码设置gridview前颜色

时间:2016-08-25 08:03:14

标签: c# colors telerik

我有一个字符串,包含颜色名称或颜色代码。所以字符串可以包含例如Blueff106603。我要做的是获得正确的颜色,将其设置为Telerik RadGridView中的前色。我尝试使用Color.FromName(string name)方法,它可以正常使用颜色名称。但它不适用于颜色代码(逻辑上)。经过一些研究后,我尝试使用UInt32.TryParse()解析字符串。我现在有以下代码:

private void gvCustComments_CellFormatting(object sender, CellFormattingEventArgs e)
{
    if (e.Row.Cells["Color"].Value != null)
    {
        UInt32 res;
        string color = e.Row.Cells["Color"].Value.ToString().Substring(2);

        if (UInt32.TryParse(color, out res))
            e.CellElement.ForeColor = Color.FromArgb((int)res);

        else
            e.CellElement.ForeColor = Color.FromName(e.Row.Cells["Color"].Value.ToString());
    }
}

我在网格视图中有三行。首先是颜色代码ff106603,第二个是Red,第三个是Black。红色和黑色都很好。但我仍然有颜色代码的一些问题。当我调试它时,前面的颜色值是0, 1, 160, 107。这是正确的值,但在网格视图中我看不到文本。看起来前面的颜色设置为透明,而不是深绿色。

我正在使用C#,Telerik,WinForms和.NET Framework 4.5.2。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可以使用ColorConverter课程。用法是这样的:

ColorConverter colorConverter = new ColorConverter();
var colorFromHexCode = (Color)colorConverter.ConvertFromString("#ff106603");
var colorFromName = (Color)colorConverter.ConvertFromString("Blue");
Console.WriteLine(colorFromHexCode.ToString());
Console.WriteLine(colorFromName.ToString());

输出结果为:

Color [A=255, R=16, G=102, B=3]
Color [Blue]

它不会转换十六进制值,除非它以"#"开头。

答案 1 :(得分:0)

要转换颜色,您可以使用unchecked()。

<asp:Label ID="here" runat="server" Text="Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh">

int trouut = unchecked((int)0Xff106603); 
here.BackColor = Color.FromArgb(trouut); 

我希望它会有所帮助。

问候,
皮埃尔。

答案 2 :(得分:0)

您可以使用颜色名称单独的行。用法是这样的:

for (int i = 0; (i <= (DGview.Rows.Count - 1)); i++)
{ 
    DGview.Rows(i).Cells[0].Style.ForeColor = Color.Red;
}