目前,我正在使用此代码将RGB字符串转换为一种颜色,以将其设置为文本框的背景。
ColorConverter colorConverter = new ColorConverter();
colorTextBox1.BackColor = (Color)colorConverter.ConvertFromString(displayColor);
但是运行此代码时出现此错误。
displayColor = "#16776960"
的值。An unhandled exception of type 'System.ArgumentException' occurred in System.Windows.Forms.dll
Additional information: Control does not support transparent background colors.
关于如何从颜色中获取透明度的任何想法?
我要做的就是使文本框的背景变为彩色。
最佳答案
控件不支持半透明颜色,并且您的十六进制字符串的开头是16
,这是alpha分量。要将颜色应用于控件,您将需要从中去除Alpha。
ColorConverter colorConverter = new ColorConverter();
Color color = (Color)colorConverter.ConvertFromString(displayColor);
color = Color.FromARGB(255, color.R, color.G, color.B);
colorTextBox1.BackColor = color;
如果字符串的长度超过7个字符(6个颜色字符和1#),则也可以从字符串中简单地删除该字母
string hex = "#16776960";
if (hex.Length > 7)
hex = hex.Remove(1,2);