C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: データ読み込み時のセル色変更について


(過去ログ 62 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■35542 / inTopicNo.1)  データ読み込み時のセル色変更について
  
□投稿者/ プリ太 (13回)-(2009/05/08(Fri) 17:08:22)

分類:[C#] 

プリ太です。
環境はWinXP VS2005です。

ファイルを読み込み、値によってDataGridViewの色を変更しようとしています。
いくつか値によって色を変更するDataGridViewはあるのですが、
1つのDataGridViewコントロールだけ画面が表示された時に変更した色が反映されていません。
他のDataGridViewコントロールと違うところは、色が変更されるDataGridViewはColumnCount,RowCountでセル数の設定を行っていますが、
色が変わらないDataGridViewコントロールは、
DataTable tableDr = new DataTable();
for (int i = 0; i < 32; i++)
{
tableDr.Columns.Add("");
}
for (int i = 0; i < 10; i++)
{
tableDr.Rows.Add("");
}
this.dgvEDIT_dr.DataSource = tableDr;
でセル数の設定を行っています。

画面が表示された後、クリックしたセルの色を変更するのですが、この動作はClickイベントで
dgvEDIT_dr[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Yellow;
dgvEDIT_dr[e.ColumnIndex, e.RowIndex].Style.SelectionBackColor = Color.Yellow;
処理を行い、うまくいっています。
これと同じようにデータ反映関数の中に
if (nSpData[0] == "1")
{
dgvEDIT_dr[nSp, nRow].Style.BackColor = Color.Yellow;
dgvEDIT_dr[nSp, nRow].Style.SelectionBackColor = Color.Yellow;
}

と入れているのですが、DataSourceでセル数を設定したDataGridViewコントロールだけ色が反映されません。

DataSourceでセル数を設定すると、扱い方が異なるのでしょうか?

宜しくお願いします。
引用返信 編集キー/
■35544 / inTopicNo.2)  Re[1]: データ読み込み時のセル色変更について
□投稿者/ 魔界の仮面弁士 (1058回)-(2009/05/08(Fri) 17:23:30)
No35542 (プリ太 さん) に返信
> ファイルを読み込み、値によってDataGridViewの色を変更しようとしています。

セルごとにスタイルを設定する方法だと、ソートした場合や値の編集時に、
再設定が必要になってしまいます。また、オーバーヘッドも大きくなってしまいます。

値によって色を変更する場合には、CellFormatting イベントで、e.Value の値に応じて、
e.Style を操作することを検討してみてください。


下記の[セル スタイルの効率的な使用]も参考に。
http://msdn.microsoft.com/ja-jp/library/ha5xt0d9.aspx
引用返信 編集キー/
■35614 / inTopicNo.3)  Re[2]: データ読み込み時のセル色変更について
□投稿者/ プリ太 (14回)-(2009/05/11(Mon) 11:21:28)
魔界の仮面弁士 さん、こんにちは。

>>ファイルを読み込み、値によってDataGridViewの色を変更しようとしています。
>
> セルごとにスタイルを設定する方法だと、ソートした場合や値の編集時に、
> 再設定が必要になってしまいます。また、オーバーヘッドも大きくなってしまいます。

ソートは不可にしています。

行いたいことは、320個のセルに、読み込んだ値を色と文字で表示し、また、クリックされたセルに色と文字を表示することです。
値は"0-1"のように、"色番号-文字値"となっており、セルは0番の色を背景色に設定し、"1"を表示します。
また、マウスが置かれた位置がわかりにくいため、ツールチップでセル位置の表示を行っています。
そのために、コントロール上のセル数はDataSourceで設定しています。
#ツールチップの表示については以前質問させていただきました。


> 値によって色を変更する場合には、CellFormatting イベントで、e.Value の値に応じて、
> e.Style を操作することを検討してみてください。

このイベントだと、セルに表示された数値で変更になるのではないでしょうか?
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -