DGV Hintergrundfarbe alle 3 Zeilen ändern

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    DGV Hintergrundfarbe alle 3 Zeilen ändern

    Hallo liebe Community!
    Vorweg: ich habe diese Frage schonmal in einem anderen Thread gestellt ->

    Leider ist hier kein Ergebniss raus gekommen, daher der neue Thread mit abgeänderter Grundfrage!

    Ich habe eine Datagridview! Und ich will das alle 3 Zeilen sich die Hintergrundfarbe abwechselt.
    Also so in etwar:

    Zeile 1 - 3 Hintergrundfarbe: Blau
    Zeile 4 - 6 Hintergrundfarbe: Gelb
    Zeile 7 - 10 Hintergrundfarbe: Blau
    Zeile 11 - 14 Hintergrundfarbe: Gelb
    usw ..........
    Ein Timer wird dir da nicht helfen, was soll er den zeitlich in deinem DGV tun?
    Hier ein grober Ansatz, wie du die DGV-Rows durchlaufen könntest:

    VB.NET-Quellcode

    1. Dim Zeile As Integer
    2. Dim Malen As Boolean
    3. For i = 0 To DGV.Rows.Count - 1 Step 3
    4. If Not Malen Then
    5. Malen = True
    6. Else
    7. For j = 0 To 2
    8. Zeile = i + j
    9. If Zeile > DGV.Rows.Count - 1 Then Exit For
    10. '
    11. 'hier dann die Zeile im DGV umfärben
    12. '
    13. Next j
    14. Malen = False
    15. End If
    16. Next i
    Hi! Danke für die Hilfe! Aber ich komme einfach nicht klar!

    Mir fehlt total der Plan!

    Also wo müsste der Code hin? Ich hätte mir ja gedacht das ein Timer immer wieder die DGV-Rows durchforstet und eben alle 3 Zeilen einfärbt.

    Hab mal in einem Timer folgendes reinkopiert:

    VB.NET-Quellcode

    1. Dim Zeile As Integer
    2. Dim Malen As Boolean
    3. For i = 0 To DataGridView3.Rows.Count - 1 Step 3
    4. If Not Malen Then
    5. Malen = True
    6. Else
    7. For j = 0 To 2
    8. Zeile = i + j
    9. If Zeile > DataGridView3.Rows.Count - 1 Then Exit For
    10. '
    11. DataGridView3.DefaultCellStyle.BackColor = Color.LightGreen
    12. '
    13. Next j
    14. Malen = False
    15. End If
    16. Next i


    Da passiert folgendes:
    die ersten 3 Zeilen passiert nix, füge ich die nächsten 3 Zeilen ein werden alle 6 Zeilen eingefärbt!!!

    Im Klartext: Mir gehts eigentlich nur darum das immer nach 3 Zeilen eine klare Abgrenzung ist.
    Hallo,

    mit einem Timer? Nutze das Paint-Event. Ich hab dir ein Beispiel für eine Custom DGV gemacht.

    VB.NET-Quellcode

    1. Public Class DGV
    2. Inherits DataGridView
    3. Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    4. Dim crow As Integer
    5. Dim colored As Boolean = False
    6. For i As Integer = 0 To Me.RowCount - 1 Step 3
    7. If colored Then
    8. For j = 0 To 2
    9. crow = i + j
    10. If crow > Me.Rows.Count - 1 Then
    11. Exit For
    12. End If
    13. Me.Rows(crow).DefaultCellStyle.BackColor = Color.DarkSlateBlue
    14. Next j
    15. colored = False
    16. Else
    17. For j = 0 To 2
    18. crow = i + j
    19. If crow > Me.Rows.Count - 1 Then
    20. Exit For
    21. End If
    22. Me.Rows(crow).DefaultCellStyle.BackColor = Color.White
    23. Next j
    24. colored = True
    25. End If
    26. Next
    27. MyBase.OnPaint(e)
    28. End Sub
    29. End Class


    mfG

    Derfuhr