Bedingte Formatierung

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Faulenzer89.

    Bedingte Formatierung

    Hallo zusammen,

    Wie kann ich in einer DataGridView eine bedingte Formatierung erstellen???.

    Die Formatierung der ganzen Zeile soll von der 1. Spalte der Zeile abhängig sein. Die 1. Spalte enthält nämlich die Nummerierung (1., 1.1, 1.2,2.,2.1, usw.). Nun soll bei jeder ganzen Zahl die Zeile Fett formatiert werden.



    PS: Bin noch Anfänger.
    Kann mir jemand bitte erklären, warum dieser Code funktionniert:

    VB.NET-Quellcode

    1. Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    2. If DataGridView1(e.ColumnIndex, e.RowIndex).Value = 10 Then
    3. DataGridView1(e.ColumnIndex, e.RowIndex).Style.ForeColor = Color.Red
    4. End If
    und dieser Code nicht

    VB.NET-Quellcode

    1. Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    2. If DataGridView1(e.ColumnIndex, e.RowIndex).Value < 10 Then
    3. DataGridView1(e.ColumnIndex, e.RowIndex).Style.ForeColor = Color.Red
    4. End If
    Das Zeichen "=" wird zu "<". Aber es werden alle Zellen mit rot geschrieben, auch wenn der Wert grösser ist als 10. ?( Warum, und wie kann ich das ändern?
    Statt
    DataGridView1(e.ColumnIndex, e.RowIndex).Value
    versuch mal:
    e.Value

    Außerdem musst du berücksichtigen, dass Value ein String ist und das Event für alle Spalten ausgelöst wird, also auch für String-Spalten wo definitiv keine zahl drin stehen kann.
    Siehe MSDN: DataGridView.CellFormatting-Ereignis (System.Windows.Forms)
    Gruß, Agent Smith 8-)

    activeFlags = (lazy OR weary)

    Lemgo-Verschwörung | Mathematics | VB-Paradise in blau
    Vielen Dank. Habe jetzt endlich nach langem Ausprobieren meinen Code.

    VB.NET-Quellcode

    1. On Error Resume Next
    2. For I As Integer = 0 To Tabelle1DataGridView.Rows.Count - 1
    3. Dim SearchString As String = Tabelle1DataGridView.Rows(I).Cells(0).Value
    4. Dim SearchChar As String = "."
    5. Dim TestPos As Integer
    6. If TestPos = InStr(1, SearchString, SearchChar, CompareMethod.Text) = True Then
    7. Tabelle1DataGridView.Rows(I).DefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Bold)
    8. Tabelle1DataGridView.Rows(I).DefaultCellStyle.BackColor = Color.Cyan
    9. Else
    10. Tabelle1DataGridView.Rows(I).DefaultCellStyle.Font = New Font("Arial", 12, FontStyle.Regular)
    11. Tabelle1DataGridView.Rows(I).DefaultCellStyle.BackColor = Color.White
    12. End If
    13. Next