ListBox.DrawItem ohne DrawItem Event

  • VB.NET

    ListBox.DrawItem ohne DrawItem Event

    Problem gelöst... ich Idiot hatte den DrawMode falsch gesetzt habe
    Lösung: ListBox1.DrawMode = DrawMode.OwnerDrawVariable
    statt: ListBox1.DrawMode = DrawMode.OwnerDrawFixed

    Tut mir leid Leute, erst denken, dann Thread eröffnen.

    Ursprünglicher Thread im Spoiler unten.

    Spoiler anzeigen
    Hallo Leute,

    gibt es eine Möglichkeit DrawItem ohne das Event auszuführen?

    Hier der Event Code:

    VB.NET-Quellcode

    1. Private Sub ListBox1_DrawItem(sender As Object, e As DrawItemEventArgs) Handles ListBox1.DrawItem
    2. e.DrawBackground()
    3. Dim g As Graphics = e.Graphics
    4. Dim br_1 As Brush = Brushes.Black
    5. Dim br_2 As Brush = Brushes.Red
    6. g.FillRectangle(New SolidBrush(Color.White), e.Bounds)
    7. e.Graphics.DrawString(ListBox1.Items(e.Index).ToString(), e.Font, br_1, e.Bounds, StringFormat.GenericDefault)
    8. For i As Integer = 0 To ListBox1.Items.Count - 1
    9. If ListBox1.Items(i).ToString().Contains("nicht") Then
    10. e.Graphics.DrawString(ListBox1.Items(i).ToString(), e.Font, br_2, e.Bounds, StringFormat.GenericDefault)
    11. End If
    12. Next i
    13. e.DrawFocusRectangle()
    14. End Sub



    Mein Ansatz ohne Event:

    VB.NET-Quellcode

    1. Private Sub change_Color()
    2. For i As Integer = 0 To ListBox1.Items.Count - 1
    3. If ListBox1.Items(i).ToString().Contains("nicht") Then
    4. ListBox1.CreateGraphics.DrawString(ListBox1.Items(i).ToString(), ListBox1.Font, Brushes.Red, ListBox1.Bounds, StringFormat.GenericDefault)
    5. End If
    6. Next
    7. End Sub


    Der obige Code funktioniert ohne DrawEvent nicht.
    Gibt es da einen Weg das ohne Event hin zu bekommen?

    Das Problem an der Sache ist, dass ich die ListBox per Schleife befülle und das Event jedes mal ausgeführt wird.
    Am Ende habe ich dann lauter Rote Strings die irgendwo im nirgendwo hängen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Petersilie“ ()