我在QueryString中传递十六进制值.我想将其转换为颜色,以在网格视图中的单元格中使用ForeColor.都尝试System.Drawing.ColorTranslator.FromHtml()并System.Drawing.Color.FromArgb()没有运气.
我的QueryString是urlencoded所以重要的部分看起来像:
QueryString...&color=%23AA4643
Run Code Online (Sandbox Code Playgroud)
以下是我试过的方法.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
Run Code Online (Sandbox Code Playgroud)
以下是我的尝试.FromHtml:
string sColor = Request.QueryString["color"];
System.Drawing.Color myColor = new System.Drawing.Color();
myColor = System.Drawing.ColorTranslator.FromHtml(sColor);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,myColor设置为 - myColor ="{Name = ffaa4643,ARGB =(255,170,70,67)}"
但是当我去使用它时,我收到一个错误:
指数超出范围.必须是非负数且小于集合的大小.参数名称:index
任何和所有的帮助非常感谢
试试这个:
string sColor = Request.QueryString["color"]; // sColor is now #AA4643
Int32 iColorInt = Convert.ToInt32(sColor.Substring(1),16);
Color curveColor = System.Drawing.Color.FromArgb(iColorInt);
Run Code Online (Sandbox Code Playgroud)