2

我编写了一个格式为 RGB 的字符串,我想将此字符串用于 forcolor 文本框?我将此字符串剪切为 4 个字符串,其值类似于 (ff,00,12,ff) 在 Visual Studio 中运行此代码但显示错误

值不是当前格式

textbox.ForeColor=
               Color.FromArgb(Convert.ToInt32(a[0]),
                              Convert.ToInt32(a[1]),
                              Convert.ToInt32(a[2]),
                              Convert.ToInt32(a[3]));

请帮我解决这个问题。

4

3 回答 3

2

指定 base 16,如下所示:

Color.FromArgb(Convert.ToInt32(a[0], 16),
               Convert.ToInt32(a[1], 16),
               Convert.ToInt32(a[2], 16),
               Convert.ToInt32(a[3], 16));

ff不是一个有效的数字是 base 10Convert.ToInt32默认使用基数10。我假设您在a数组中有正确的值。

例如:

string[] a = {"ff", "00", "12", "ff"};

Color color = Color.FromArgb(Convert.ToInt32(a[0], 16),
                             Convert.ToInt32(a[1], 16),
                             Convert.ToInt32(a[2], 16),
                             Convert.ToInt32(a[3], 16));

Console.WriteLine(color); //prints: Color [A=255, R=0, G=18, B=255]

一种更简单的方法是使用ColorConverter的实例:

string colorHex = "#" + string.Join("", a);
var color = (Color)new ColorConverter().ConvertFromString(colorHex);
于 2013-11-07T10:11:04.903 回答
1

您的值是十六进制的,因此在将它们传递给FromArgb仅接受整数之前,您需要将它们转换为整数。

int colorR = int.Parse(hexValueOfRed, System.Globalization.NumberStyles.HexNumber);
....
于 2013-11-07T10:12:24.247 回答
0

我建议看一下ColorConverter你可以直接向它提供 argb 字符串的类。

这可能很有用: 关于这个的另一个问题

于 2013-11-07T10:16:19.933 回答