Rubrik: Controls · ListView & TreeView | VB-Versionen: VB2005, VB2008 | 11.05.09 |
ListView elegant füllen Eine kleine Hilfsfunktion, mit der sich ein mehrspaltiges ListView-Control eleganter und mit wesentlich weniger Codezeilen füllen lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 72.167 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das manuelle Füllen eines mehrspaltigen ListView-Controls bedeutet immer ein Menge Tipparbeit:
Dim SubItem As ListViewItem With ListView1.Items SubItem = .Add("Zeile 1") SubItem.SubItems.Add("Spalte 2") SubItem.SubItems.Add("Spalte 3") SubItem.SubItems.Add("Spalte 4") SubItem.SubItems.Add("Spalte 5") SubItem = .Add("Zeile 2") SubItem.SubItems.Add("Spalte 2") SubItem.SubItems.Add("Spalte 3") SubItem.SubItems.Add("Spalte 4") SubItem.SubItems.Add("Spalte 5") ' usw. End With
Je mehr Spalten vorhanden sind, desto mehr Codezeilen werden somit auch zum Füllen des ListViews benötigt.
Daher möchten wir Ihnen heute eine kleine "Hilfsfunktion" vorstellen, mit der sich eine komplette ListView-Datenzeile mit nur einer einzigen Codezeile füllen lässt.
Zunächst unsere Hilfsfunktion:
''' <summary> ''' Fügt dem ListView eine komplette Datenzeile hinzu ''' </summary> ''' <param name="lvw">ListView-Control</param> ''' <param name="Text">Parameterliste der einzelnen Zellenwerte</param> Public Sub lvwAddItem(ByVal lvw As ListView, ByVal ParamArray Text() As String) With lvw.Items ' 1. Eintrag hinzufügen With .Add(Text(0)) If Text.Length > 1 Then ' String-Array für die weiteren Zellen erstellen... Dim SubItems(Text.Length - 1) As String Array.Copy(Text, 1, SubItems, 0, Text.Length - 1) ' ... und diese via AddRange dem ListView hinzufügen .SubItems.AddRange(SubItems) End If End With End With End Sub
Und so wird die neue Hilfsfunktion verwendet:
lvwAddItem(ListView1, "Zeile 1", "Spalte 2", "Spalte 3", "Spalte 4", "Spalte 5") lvwAddItem(ListView1, "Zeile 2", "Spalte 2", "Spalte 3", "Spalte 4", "Spalte 5") ' usw.
Anmerkung von xtts02
Noch eleganter wird das Ganze, wenn man das Array wie folgt zuweist:
''' Fügt dem ListView eine komplette Datenzeile hinzu ''' </summary> ''' <param name="lvw">ListView-Control</param> ''' <param name="Text">Parameterliste der einzelnen Zellenwerte</param> Public Sub lvwAddItem(ByVal lvw As ListView, ByVal ParamArray Text() As String) With lvw.Items .Add(New ListViewItem(Text)) End With End Sub