3

我在我的 QueryString 中传递了一个十六进制值。我想将其转换为一种颜色,以便在网格视图的单元格中使用 ForeColor。都试过了System.Drawing.ColorTranslator.FromHtml()System.Drawing.Color.FromArgb()没有运气。

我的 QueryString 是 urlencoded 所以重要的部分看起来像:

QueryString...&color=%23AA4643

以下是我尝试过的.FromArg:

string sColor = Request.QueryString["color"]; // sColor is now #AA4643
Int32 iColorInt = Convert.ToInt32(sColor,16); //Get error message - Could not find any recognizable digits
Color curveColor = System.Drawing.Color.FromArgb(iColorInt); //Never makes it here

这是我尝试过的.FromHtml:

string sColor = Request.QueryString["color"]; 
System.Drawing.Color myColor = new System.Drawing.Color();
myColor = System.Drawing.ColorTranslator.FromHtml(sColor);

在这种情况下,myColor 设置为 - myColor = "{Name=ffaa4643, ARGB=(255, 170, 70, 67)}"

但是当我去使用它时,我得到一个错误:

指数超出范围。必须是非负数且小于集合的大小。参数名称:索引

非常感谢任何和所有帮助

4

1 回答 1

8

尝试这个:

string sColor = Request.QueryString["color"]; // sColor is now #AA4643
Int32 iColorInt = Convert.ToInt32(sColor.Substring(1),16); 
Color curveColor = System.Drawing.Color.FromArgb(iColorInt); 
于 2012-12-06T16:31:04.263 回答