| ■No94191 (あい さん) に返信 >>(3) 色情報の値検査を行う必要がありますか? > できれば常に「# + 16進数6桁」形式しか認めない方針としたいです。
DataGridView のテキストセルへの直接入力であれば、 検証用のイベントが用意されています。 https://dobon.net/vb/dotnet/datagridview/cellvalidating.html
> カラーダイアログボックスで選択された値はRGB値にしているのですが、 > これは「# + 16進数6桁」ではないですよね(-_-;)
どうやって RGB 値にしているかが記されていないので、 正しいか間違っているかは判断できません…。
(1) Color → Alpha, Red, Green, Blue の個別要素の Byte 群 Color の A, R, G, B プロパティ
(2) Color → &HAARRGGBB な Integer Color の ToArgb() メソッド
(3) Color → &HBBGGRR な Integer ColorTranslator の ToWin32(color) メソッド
(4) Color → "#RRGGBB" 形式の文字列 もしくは "Magenta" や "activeborder" などの定義済み色名 ColorTranslator の ToHtml(color) メソッド
(5) Color → システムカラーは &H800000XX な Integer、それ以外は &HBBGGRR な Integer ColorTranslator の ToOle(color) メソッド
(6) Color → 元の Color 構造体に復元可能な文字列 ColorConverter の ConvertToInvariantString(color) メソッド
(7) Color → 元の Color 構造体に復元可能な文字列 Color の Name プロパティ
上記の逆変換はこうなります。
(1) … Color の FromArgb(a, r, g, b) メソッド ※ Alpha 値が 255 固定の場合に限り、FromArgb(r, g, b) でも可 (2) … Color の FromArgb(argb) メソッド (3) … ColorTranslator の FromWin32(win32Color) メソッド (4) … ColorTranslator の FromHtml(win32Color) メソッド (5) … ColorTranslator の FromOle(win32Color) メソッド (6) … ColorConverter の ConvertToInvariantString(win32Color) メソッド (7) … Color の FromName(color) メソッド
===== Color を (1)、(2)、(3) の方法で変換した場合、SystemColors を既知色に復元することができません。 Color を (4)、(5) の方法で変換した場合、Alpha 値は処理できません。(Transparent 等をのぞき、すべて不透明色扱い) |