我在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)}”
但是当我去使用它时,我收到一个错误:
指数超出范围。必须是非负数且小于集合的大小。 参数名称:index
任何和所有帮助都非常感谢
答案 0 :(得分:7)
试试这个:
string sColor = Request.QueryString["color"]; // sColor is now #AA4643
Int32 iColorInt = Convert.ToInt32(sColor.Substring(1),16);
Color curveColor = System.Drawing.Color.FromArgb(iColorInt);