Hi Ipinter,
das funzt nicht, Zellen bleiben ganz normal weiß
Ich poste jetzt mal ein bisschen Code, vielleicht ist da ja was nicht in Ordnung.
[u]Die Klasse:
#Region "Zelle Geschlecht nach Typ färben"
' eigener Spaltenstil, um Zellen nach Inhalt einzufärben
Public Class GeschlechtsZellenFarbig
Inherits DataGridTextBoxColumn
Public Sub New()
End Sub
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)
Try
Dim o As Object
o = Me.GetColumnValueAtRow(source, rowNum)
If (Not (o) Is Nothing) Then
Dim c As Char
c = CType(o, String).ToString()
If (c = "männlich") Then
backBrush = New SolidBrush(Color.LightSkyBlue)
foreBrush = New SolidBrush(Color.White)
ElseIf (c = "weiblich") Then
backBrush = New SolidBrush(Color.LightPink)
foreBrush = New SolidBrush(Color.Black)
End If
End If
Catch ex As Exception
Finally
MyBase.Paint(g, bounds, source, rowNum, backBrush, foreBrush, _
alignToRight)
End Try
End Sub
End Class
#End Region [u]In Form wo das Datagrid ist:
Private Sub GeschlechtsZellenFärben()
' neuer SpaltenStil
Dim newCS As DataGridColumnStyle
' neuen TableStyle erstellen
Dim myTS As New DataGridTableStyle
' dem TableStyle einen Namen geben
myTS.MappingName = "Tab1"
' DataTable aus der DataSource des DataGrid holen
Dim myDT As DataTable = CType(DataGrid1.DataSource, DataView).Table
' Für jede Spalte einen ColumnStyle erstellen
For i As Integer = 1 To myDT.Columns.Count - 1
' neuen eigenen ColumnStyle erstellen
If myDT.Columns(i).DataType Is GetType(Boolean) Then
If myDT.Columns(i).ColumnName = "bezahlt" Or myDT.Columns( _
i).ColumnName = "nicht bezahlt" Then
newCS = New ZellenFarbig(myDT.Columns(i).ColumnName = _
"bezahlt")
Else
newCS = New DataGridBoolColumn
End If
Else
newCS = New GeschlechtsZellenFarbig
End If
With newCS
' demn ColumnStyle Namen der Spalte aus der DataTable zuordnen
.MappingName = myDT.Columns(i).ColumnName
' Spaltennamen als Überschrift
.HeaderText = myDT.Columns(i).ColumnName
' neuen ColumnStyle dem TableStyle zuordnen
myTS.GridColumnStyles.Add(newCS)
End With
Next
' alten TableStyle entfernen
Dim oldTS As DataGridTableStyle = DataGrid1.TableStyles( _
myTS.MappingName)
If Not oldTS Is Nothing Then DataGrid1.TableStyles.Remove(oldTS)
DataGrid1.TableStyles.Add(myTS)
End Sub Was meinst Du, oder die Experten?
Gruß
Chief
VB@rchiv its the Best
|