- - PR -
DataGridの行の色
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-20 01:16
VB.NET2003を使用しています。
ステータスによってDataGridの行の色を変更する方法を どなたかご教授ください。 現在は、列の色を変えるために Paintメソッドをオーバーライドする手法を使用しています。 以下のコードにIF文で別の列のcellの値を判別させて 行の色を変えるようにするというやり方になるのでしょうか? Public Class Class3 Inherits DataGridTextBoxColumn 'Paintメソッドをオーバーライドする Protected Overloads Overrides Sub Paint( _ ByVal g As Graphics, _ ByVal bounds As Rectangle, _ ByVal source As CurrencyManager, _ ByVal rowNum As Integer, _ ByVal backBrush As Brush, _ ByVal foreBrush As Brush, _ ByVal alignToRight As Boolean _ ) foreBrush = New SolidBrush(Color.Black) backBrush = New SolidBrush(Color.Tomato) '基本クラスのPaintメソッドを呼び出す MyBase.Paint(g, bounds, source, rowNum, _ backBrush, foreBrush, alignToRight) End Sub End Class | ||||||||
|
投稿日時: 2006-07-20 09:36
Paint メソッドがどのタイミングで呼ばれるかを ブレイクポイントを貼ったりトレースして確かめてみてください。 あとは、セルの値を元に色を変えてあげれば出来ると思います。 DataGrid内の特定のセルの色を変える http://dobon.net/vb/dotnet/datagrid/coloredcell.html | ||||||||
|
投稿日時: 2006-07-22 10:01
ご回答ありがとうございます。
最初の書き込みで説明不足でしたことをお詫びいたします。 現在、同じ列内のセルの値を参照して列の色や同じ列内のセルの色を 変えることはできるのですが 他の列のセルの値を参照してその列1行全体の色を変更したいと 思っています。 Form1クラス(Datagridあり)と Class3クラス(Paintメソッドをオーバーライド用) があり、Form1クラスで下記のように指定しています。 'カラムスタイル名の宣言 Dim Xclmstyle1 As Class3 '列スタイルの設定、列スタイルの追加 Xclmstyle1 = New Class3 Xclmstyle1.MappingName = "項目名" Xclmstyle1.HeaderText = "項目名" Xclmstyle1.Width = 100 Xtblstyle2.GridColumnStyles.Add(Xclmstyle1) | ||||||||
|
投稿日時: 2006-07-22 12:06
このあたりで取れるかな http://www.atmarkit.co.jp/fdotnet/dotnettips/064dgcell/dgcell.html ただ、一番最初のセルは何を元に色をつけるんでしょうか? | ||||||||
|
投稿日時: 2006-08-16 15:51
以下で解決できました。
ありがとうございました。 Public Class Class3 Inherits DataGridTextBoxColumn Dim DRView As DataRowView 'Paintメソッドをオーバーライドする Protected Overloads Overrides Sub Paint( _ ByVal g As Graphics, _ ByVal bounds As Rectangle, _ ByVal source As CurrencyManager, _ ByVal rowNum As Integer, _ ByVal backBrush As Brush, _ ByVal foreBrush As Brush, _ ByVal alignToRight As Boolean _ ) '標準色 foreBrush = New SolidBrush(Color.Black) backBrush = New SolidBrush(Color.White) DRView = CType(source.List(rowNum), DRView) Select Case CType(DRView.Item("項目名"), String) Case "X33333" backBrush = New SolidBrush(Color.LightSkyBlue) Case "X44444" backBrush = New SolidBrush(Color.LightBlue) End Select '基本クラスのPaintメソッドを呼び出す MyBase.Paint(g, bounds, source, rowNum, _ backBrush, foreBrush, alignToRight) End Sub End Class |
1