「ほっ」と。キャンペーン
(.Net)DataGridViewセルスタイルの優先順位
最初 DataGridView でセルの値によって背景変更する処理をしていました。
例えばTrueなら背景色を付け、Falseならスタイルを無しする下記のような感じです。(C#)

//row は DataGridViewRow オブジェクト
if ((bool)row.Cells["Column1"].Value == true){
row.DefaultCellStyle.BackColor = Color.Red;
}else{
row.DefaultCellStyle.BackColor = SystemColors.WindowText;
}


で、それから下記のように列(Column1)の背景色を設定しようとしたができませんでした。

DataGridView1.Columns["Column1"].DefaultCellStyle.BackColor = Color.Honeydew;

どうやら、スタイルの設定には優先順位があるようです。

優先順位については、dobon:DataGridViewにセルスタイルを設定するで書かれていました。

つまり先にセルスタイルが優先されるので、この場合後から列スタイルを設定しても意味が無かったようです。

しかも今回 row.Cells["Column1"] が false ならセルスタイルを解除したいのになぜか SystemColors.WindowText を指定しているのも問題でした。
この場合、CellStyleにnullを指定してやればいいようです。
こうすると、row.Cells["Column1"] が false のときは、Color.Honeydew 背景色が Color.Honeydew となります。(下記コード参照)

//スタイルをnullにするとスタイル解除となる。
if ((bool)row.Cells["Column1"].Value == true) {
row.DefaultCellStyle.BackColor = Color.Red;
} else {
//row.DefaultCellStyle.BackColor = SystemColors.WindowText;
row.DefaultCellStyle = null;
}

[PR]
by jehoshaphat | 2010-06-04 00:34 | .Net開発 | Trackback | Comments(2)
トラックバックURL : http://jehupc.exblog.jp/tb/12748380
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。
Commented by 5 at 2013-05-18 17:04 x
今、問題になっているのは、
列ごとにスタイルが設定してある DataGridView の
特定の行の色を変更する方法です。

データが1件以上ある場合は、セルスタイルのコンストラクタに
その行のスタイルを入れれば作成できますが、
データが0件の場合、どうすればよいか、が問題になっています。
Commented by Jehoshaphat at 2013-05-23 20:17
ども3流PGです。
すみませんが、今検証できる環境がないので、ちょっと3流PGでも分かりかねます。


<< (.Net)DataGridV... (.Net)DataGridV... >>