- PR -

DataGridの行の色

1
投稿者投稿内容
みかん
常連さん
会議室デビュー日: 2003/12/13
投稿数: 42
投稿日時: 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

かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-07-20 09:36
引用:

みかんさんの書き込み (2006-07-20 01:16) より:
コード:
        '基本クラスのPaintメソッドを呼び出す
        MyBase.Paint(g, bounds, source, rowNum, _
            backBrush, foreBrush, alignToRight)




Paint メソッドがどのタイミングで呼ばれるかを
ブレイクポイントを貼ったりトレースして確かめてみてください。
あとは、セルの値を元に色を変えてあげれば出来ると思います。

DataGrid内の特定のセルの色を変える
http://dobon.net/vb/dotnet/datagrid/coloredcell.html
みかん
常連さん
会議室デビュー日: 2003/12/13
投稿数: 42
投稿日時: 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)

かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-07-22 12:06
引用:

みかんさんの書き込み (2006-07-22 10:01) より:

現在、同じ列内のセルの値を参照して列の色や同じ列内のセルの色を
変えることはできるのですが
他の列のセルの値を参照してその列1行全体の色を変更したいと
思っています。


このあたりで取れるかな
http://www.atmarkit.co.jp/fdotnet/dotnettips/064dgcell/dgcell.html

ただ、一番最初のセルは何を元に色をつけるんでしょうか?
みかん
常連さん
会議室デビュー日: 2003/12/13
投稿数: 42
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)