ColorDialogクラスのCustomColorsプロパティが期待通りに動作しない。
フォームの背景色をColor.FromArgb(50, 100, 150)に設定している。ちなみにこんな色。
ボタンがクリックされるとColorDialogのCustomColorsプロパティにColor.FromArgb(50, 100, 150)を設定して表示する。
おかしい、追加した色が黒く表示されている。色の作成ボタンを押してRGB値を見てみると
RとBが反転している。これは困った。
using System;
using System.Drawing;
using System.Windows.Forms;
public partial class Form1 :Form {
Color color = Color.FromArgb(50, 100, 150);
public Form1() {
InitializeComponent();
this.BackColor = color;
}
private void button1_Click(object sender, EventArgs e) {
this.colorDialog1.CustomColors = new int[] { color.ToArgb() };
this.colorDialog1.ShowDialog();
}
}
ここに解決策があった。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14475&forum=7
ToArgbではなくColorTranslator.ToWin32()を使えばいいとのこと。これで期待通りに動作した。
めでたしめでたし。
![ClpBdImg0[1]](https://anis774.net/wp-content/uploads/2014/01/ClpBdImg01.jpeg)
![ColorDialogBug2[1]](https://anis774.net/wp-content/uploads/2014/01/ColorDialogBug21.jpeg)