Hier mal mein Code:
Public Class OSColorTextBoxColumn
Inherits DataGridTextBoxColumn
Protected Overloads Overrides Sub Paint(ByVal graph As Graphics, _
ByVal rectbounds As Rectangle, ByVal curmngrSrc As _
CurrencyManager, ByVal RowNumber As Integer, ByVal _
ForeColorBrush As Brush, ByVal BackColorBrush As Brush, _
ByVal AlignmentRight As Boolean)
'//geerbte Paint Methode des DataGrids überschreiben
Dim ObjVal As Object
ObjVal = Me.GetColumnValueAtRow(curmngrSrc, RowNumber)
' eigene Behandlung
If Not (IsNothing(ObjVal) Or IsDBNull(ObjVal)) Then
Dim cellValue As String
cellValue = CType(ObjVal, String) 'die Werte jeder einzelnen Zelle
' im Grid
Dim VergleichsDatum As Date
Dim oForm As New Form1
'jeweilige Kürzel der MA mit unterschiedlichen Farben belegen
Select Case cellValue
Case Is = "AS"
BackColorBrush = Brushes.Red
ForeColorBrush = Brushes.White
Case Is = "MB"
BackColorBrush = Brushes.Blue
ForeColorBrush = Brushes.White
Case Else
BackColorBrush = Brushes.White
ForeColorBrush = Brushes.Black
End Select
'Aktuelle Datenbestände rot einfärben
If (CType(cellValue, String).IndexOf(":"c)) <> -1 Then 'Spalte
' prüfen auf Zeitformat
If (CType(cellValue, Date) <> CType(oForm.Zeit, Date)) = True Then
If (CType(cellValue, Date) > CType(oForm.Zeit, Date)) = _
True Then
BackColorBrush = Brushes.White
ForeColorBrush = Brushes.Red
End If
End If
End If
End If
' Basisklasse übernimmt die Darstellung
MyBase.Paint(graph, rectbounds, curmngrSrc, RowNumber, _
BackColorBrush, ForeColorBrush, AlignmentRight)
End Sub
Public Sub SetTableStyle(ByVal aGrid As DataGrid, ByVal aDT As DataTable)
'// Definiert die View des DataGrids - das Erscheinungsbild der
' einzelnen Spalten
Dim aDGTS As New DataGridTableStyle
Dim j As Integer
For j = 0 To aDT.Columns.Count - 1
Dim aOSCTBC As New OSColorTextBoxColumn
Select Case j
Case Is = 1
aOSCTBC.MappingName = aDT.Columns(j).ColumnName
aOSCTBC.HeaderText = "MA - Kürzel"
aOSCTBC.Width = 100
aOSCTBC.Alignment = HorizontalAlignment.Center
Case Is = 2
aOSCTBC.MappingName = aDT.Columns(j).ColumnName
aOSCTBC.HeaderText = "Datum"
aOSCTBC.Width = 100
aOSCTBC.Alignment = HorizontalAlignment.Center
Case Is = 3
aOSCTBC.MappingName = aDT.Columns(j).ColumnName
aOSCTBC.HeaderText = "Firma"
aOSCTBC.Width = 200
aOSCTBC.Alignment = HorizontalAlignment.Center
Case Is = 4
aOSCTBC.MappingName = aDT.Columns(j).ColumnName
aOSCTBC.HeaderText = "Artikelbezeichnung"
aOSCTBC.Width = 100
aOSCTBC.Alignment = HorizontalAlignment.Center
'hier kommen noch 5 andere Spalten mit dem gleichen code hinzu
End Select
aDGTS.GridColumnStyles.Add(aOSCTBC)
Next j
aGrid.TableStyles.Clear()
aGrid.TableStyles.Add(aDGTS)
End Sub |