人気ブログランキング | 話題のタグを見る
(.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;
}

by jehoshaphat | 2010-06-04 00:34 | .Net開発


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