2009-08-31 28 views
6

DataGridViewは、DataSourceをDataBindingに設定して塗りつぶしています。DataGridViewで特定の行を強調表示する方法

今、私は、行自体のいくつかの値に応じて異なる背景色を持つ特定の行をDataGridViewに入れたいと思います。

どうすればこれを実現できますか?

+0

を変更するRowPrePaintを使用することができます。 http://stackoverflow.com/questions/1078782/c-iterate-over-datagridview-change-row-color – rahul

答えて

7

素晴らしい例here.

は、コンセプトはあなたがグリッドからのイベントをサブスクライブということであります。セルが塗りつぶされると、イベントが発生し、値に基づいてセルなどをフォーマットすることができます。

1

DataGridviewのCellFormattingイベントハンドラでは、任意の行にデフォルトのバックカラーを設定できます。

private void MyDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) 
    { 

     if (e.RowIndex == rowIndexToHighlight) 
     { 
      e.CellStyle.BackColor = Color.Green; 
     } 

    } 
+1

-1この例では実際にパフォーマンスに悪影響があります。データバインディングを使用する場合、データグリッドは重複する行レコードを維持する必要があります。 Psasikの例では、行を共有しないようにしています。 – Kleinux

+0

@Kleinux:これは、行レコードの重複を維持するという興味深いコメントです。なぜこれがそうだと説明できますか?ありがとう – Andy

+1

ドキュメントを見ると、共有と非共有の行の記述があります。上記のコードでは、グリッドビューでデータソース内のすべての行について実際のDataGridViewRowレコードが作成されます。これらの行はセル値の意味で重複していませんが、それでもデータソースを読み取ることができますが、それ以外の場合は必要なスタイル情報のために存在する必要はありません。うまくいけば私は私のコメントを少し明確にしました。これは良いチュートリアルです。http://msdn.microsoft.com/en-us/library/ha5xt0d9.aspx – Kleinux

1

あなたは、私はこの質問からいくつかの有用な情報を見つけることができると思い行全体の色やスタイル