|
返答をありがとうございます。
環境については、聞いていたものを書いてしまいました。
すみません。
もう少し詳しく説明しますと、ハンディターミナルにて
バーコード入力を伴うシステム開発をしています。
ハンディターミナルのシステムは
WindowsR Embedded Version 7.00
でした。
FrameWorkはよくわかりませんが、
.NET Compact Framework v3.5
になるのでしょうか?(wiki調べ)
開発時では、ターゲットデバイスをWindowsCEにし、
エミュレータで動作確認をしています。
DataGridの背景色の変更は、Paint メソッドをオーバーライドしています。
背景色を変更する部分を抜き出してみました。
既存プログラムを変更しているので、理解は怪しいですが。。。
他に、列幅や右寄せ設定等しています。
このやり方が良くないのでしょうか?
-------------------------------------------------------------------
Public Class DataGridColumnStyles
Inherits DataGridTextBoxColumn
Protected BackColorColNm As String = ""
'//************************************************************
'//●BackColor プロパティ
'//************************************************************
Public Property BackColorColumnName() As String
Get
Return BackColorColNm
End Get
Set(ByVal value As String)
BackColorColNm = value
End Set
End Property
'//************************************************************
'//●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 _
)
'// 背景色変更
Dim dtView As System.Data.DataRowView = CType(CType([source], CurrencyManager).List(rowNum), System.Data.DataRowView)
Dim szArgb As String = dtView.Item(BackColorColNm)
If szArgb <> "" Then
backBrush = New SolidBrush(Color.FromArgb(CType(szArgb, Integer)))
End If
MyBase.Paint(g, bounds, [source], rowNum, backBrush, foreBrush, alignToRight)
End Sub
End Class
Public Shared Sub SetAlimentRight( _
ByRef dg As DataGrid _
, ByRef dt As DataTable _
, ByRef RightAlimentFlagList As ArrayList _
, Optional ByVal BackColorColName As String = "" _
)
If IsNothing(RightAlimentFlagList) Then Exit Sub
Dim addTableStyle As New DataGridTableStyle
For i As Integer = 0 To dt.Columns.Count - 1
Dim addColumnStyles = New DataGridColumnStyles
With addColumnStyles
'// 背景色指定列名
.BackColorColumnName = BackColorColName
End With
addTableStyle.GridColumnStyles.Add(addColumnStyles)
Next
dg.TableStyles.Clear()
dg.TableStyles.Add(addTableStyle)
dg.DataSource = dt '//dg表示
End Sub
Private Sub dg_SetDeleteRow(ByVal selRow As Integer)
Dim dtGridData As DataTable = CType(dgList.DataSource, DataTable)
If selRow = -1 Then
'// ヘッダクリック
If mbCheckAllSelect Then
'// 全解除
For i As Integer = 0 To dtGridData.Rows.Count - 1
dtGridData.Rows(i).Item("BACKCOLOR") = ""
Next
Else
'// 全選択
For i As Integer = 0 To dtGridData.Rows.Count - 1
dtGridData.Rows(i).Item("BACKCOLOR") = Color.Gray.ToArgb
Next
End If
dgList.DataSource = dtGridData
'// 全選択フラグ
mbCheckAllSelect = Not mbCheckAllSelect
Else
'// データ行クリック
If dtGridData.Rows(selRow).Item("BACKCOLOR") = "" Then
dtGridData.Rows(selRow).Item("BACKCOLOR") = Color.Gray.ToArgb
Else
dtGridData.Rows(selRow).Item("BACKCOLOR") = ""
End If
End If
Call DataGridAllColumnStyle.SetAlimentRight(dgList, dtGridData, New ArrayList(New Integer() {3}), "BACKCOLOR")
Call SelectChangeRow(miRowNum)
If selRow > 0 Then
dgList.CurrentCell = New DataGridCell(selRow, 1)
End If
End Sub
|