Rubrik: Controls · ListView & TreeView | VB-Versionen: VB2005, VB2008 | 04.02.10 |
ListView-SubItems einfärben Dieser Tipp zeigt, wie man einzelne Zellen (SubItems) innerhalb eines ListView-Controls einfärben kann. | ||
Autor: Dieter Otter | Bewertung: | Views: 34.307 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute zeigen wir, wie man einzelne Zellen (SubItems) oder auch ganze Spalte innerhalb eines ListView-Controls einfärben kann.
Hierzu muss man lediglich die UseItemStyleForSubItems-Eigenschaft des jeweiligen ListView-Eintrags auf False setzen und schon wirken sich die erweiterten SubItems-Eigenschaften, wie bspw. BackColor und ForeColor entsprechend korrekt aus.
Beispiel:
Erstellen Sie ein Projekt und platzieren auf die Form ein ListView-Control. Fügen Sie nachstehenden Code in das Form_Load Ereignis ein:
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' ListView initialisieren With ListView1 .Columns.Add("Nr.", 50) .Columns.Add("Eintrag", 200) .Columns.Add("Irgendwas", 200) End With ' ListView füllen For i As Integer = 1 To 5 With ListView1.Items.Add(CStr(i)) ' Wichtig, damit später jedes SubItem indiviuell ' eingefärbt werden kann !!! .UseItemStyleForSubItems = False .SubItems.Add("Eintrag " & CStr(i)) .SubItems.Add("Irgendwas " & CStr(i)) End With Next ListView1.FullRowSelect = True End Sub
Platzieren Sie jetzt auf die Form zwei Schaltflächen (Button1 und Button2). Beim Klick die erste Schaltfläche soll die 2. Spalte in der 2. Zeile eingefärbt werden, beim Klick auf den zweiten Button hingegen die gesamte zweite Spalte innerhalb der gesamten Einträge.
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' 2. Spalte der 2. Zeile einfärben With ListView1.Items(1) .SubItems(1).BackColor = Color.Yellow End With End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click ' Gesamte 2. Spalte einfärben With ListView1.Items For i As Integer = 0 To .Count - 1 With .Item(i).SubItems(1) .BackColor = Color.LightBlue .ForeColor = Color.Red End With Next End With End Sub
So... erweiteren wir unser kleines Beispiel jetzt noch um die Möglichkeit, alle Zeilen abwechselnd einzufärben. Platzieren Sie hierzu eine weitere Schaltfläche (Button3) auf die Form und fügen folgenden Code ein:
Private Sub Button3_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button3.Click ' alle Zeilen abwechselnd einfärben ListView1.BeginUpdate() With ListView1.Items For i As Integer = 1 To .Count Dim BColor As Color = Color.LightBlue If i Mod 2 = 0 Then BColor = Color.FromKnownColor(KnownColor.Window) With .Item(i - 1) .BackColor = BColor For u As Integer = 1 To .SubItems.Count - 1 .SubItems(u).BackColor = BColor Next End With Next End With ListView1.EndUpdate() End Sub