我有一个字符串,包含颜色名称或颜色代码。所以字符串可以包含例如Blue
或ff106603
。我要做的是获得正确的颜色,将其设置为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。有什么想法吗?
答案 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;
}