2010-12-04 12 views
0

4つの列を持つDataGridViewがあります。最初の3つは赤、緑、青の配列として返されます。すべての値は0〜255です。私はプログラムで "Color"という列を追加しました。この列の背景色にRGBの内容を反映させたい。 rgbデータが正しく表示され、デバッガを使用して、バックカラーがプロパティに対して正しく設定されています。列の背景色を設定することもでき、正しく表示されます。私は "赤"セルの背景色を設定しようとしましたが、これはどちらも動作しません。DataGridViewセルのバックカラーが設定されていません

完全に白カラムで以下のコードをもたらします。

ここに私のコードです:

 DataGridViewColumn DGC = new DataGridViewColumn(); 
     DGC.Name = "Colour"; 
     DGC.CellTemplate = new DataGridViewTextBoxCell(); 
     dgPallette.Columns.Add(DGC); 
     foreach (DataGridViewRow DGR in dgPallette.Rows) 
     { 
      Color cellColor = Color.FromArgb(
       int.Parse(DGR.Cells["Red"].Value.ToString()), 
       int.Parse(DGR.Cells["Green"].Value.ToString()), 
       int.Parse(DGR.Cells["Blue"].Value.ToString())); 
      DGR.Cells["Colour"].Style.BackColor = cellColor; 
     } 

任意のアイデア?

事前 のおかげでジム・

答えて

2

は時々私はDataGridViewの中で色を設定することが期待どおりに動作してDataGridView.CellFormattingイベントを使用してに頼るまで終わっていないことが判明 - これは常にトリックを行い、そして得ることが非常に簡単ですあなたの頭の周り。

グリッドがデータソースにバインドされていると、特に並べ替えを許可するときに、書式設定の問題が発生することがよくあります。このイベントはそれを克服します。

+0

ありがとうございました。データグリッドの内容はコンボボックスに依存します。私はselecteditemのchangeイベントで、新しい戻り配列に対して上記のコードを呼び出すようにしました。色が正しく表示されています。私はコードの後に​​datagridview.Update()を呼び出そうとしましたが、最初の更新は起こっていません.... – Spodgy

+0

ありがとうございました。私はCellFormattingイベントを実装しましたが、これは問題をソートしているようです。 – Spodgy

+0

プライベートボイドdgPallette_CellFormatting(オブジェクト送信者、DataGridViewCellFormattingEventArgs E) {IF(e.ColumnIndex == dgPallette.Columns [ "カラー"]インデックス。) {DataGridViewRow DGR = dgPallette.Rows [e.RowIndex]。 e.CellStyle.BackColor = Color.FromArgb( int.Parse(DGR.Cells ["Red"]。Value.ToString())、 int.Parse(DGR.Cells ["Green"]。Value.ToString ))、 int.Parse(DGR.Cells ["Blue"]。Value.ToString())); } } – Spodgy

関連する問題