2

RGB 形式の文字列を書き、この文字列を forcolor テキストボックスに使用したいですか? この文字列を 4 つの文字列に切り取り、値が (ff,00,12,ff) のようになるようにします。ビジュアル スタジオでは、このコードを実行しますが、次のエラーが表示されます。

値が現在の形式ではありません

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

これについて私を助けてください。

4

3 に答える 3

2

16次のようにbase を指定します。

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

ffは有効な数値ではありません10Convert.ToInt32デフォルトでbase10を使用します。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

値は 16 進数であるため、FromArgb整数のみを受け入れる に渡す前に、それらを整数に変換する必要があります。

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

ColorConverterargb 文字列を直接指定できるクラスを確認することをお勧めします。

これは便利です: これについての別の質問

于 2013-11-07T10:16:19.933 に答える