Rubrik: Controls · ListView & TreeView | VB-Versionen: VB.NET | 24.04.07 |
Autom. Spaltenanpassung im ListView-Control (.NET) Über die Width-Eigenschaft des Columns-Objekts lassen sich Spalten in ihrer Breite optimal an den Inhalt anpassen. | ||
Autor: Dieter Otter | Bewertung: | Views: 29.569 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wer kennt das nicht: man verwendet das ListView-Control mit mehreren Spalten und möchte die Spaltenbreiten wenn möglich immer optimal an den Inhalt der einzelnen Daten (Zellen) anpassen. Um das zu erreichen braucht man unter VB.NET gar keinen großen Aufwand betreiben. Die Width-Eigenschaft des Columns-Objekts stellt uns genau diese Funktionalität bereits zur Verfügung!
' optimale Spaltenbreite ListView1.Columns(x).Width = -1
Durch Setzen der Width-Eigenschaft auf den Wert -1 wird die Spaltenbreite autom. an den längsten Inhalt angepasst. Werden dem Control anschließend neue Einträge hinzugefügt, muss der Width- Eigenschaft erneut der Wert -1 zugewiesen werden, um abermalls die optimale Spaltenbreite einzustellen.
Eine weitere Besonderheit stellt die Zuweisung des Wertes -2 dar. Wird der letzten Spalten im ListView der Wert -2 zugewiesen, passt sich diese autom. an die restliche verfügbare Breite an, so dass das ListView-Control immer komplett ausgefüllt ist.
Beispiel:
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' ListView-Spalten erstelen ListView1.View = View.Details ListView1.FullRowSelect = True With ListView1.Columns .Add("Name") .Add("Adresse") .Add("Telefon", 100) .Add("E-MaiL") End With ' ListView mit Daten füllen With ListView1.Items With .Add("Dieter Otter") .SubItems.Add("97708 Steinach") .SubItems.Add("09708 706247") .SubItems.Add("info@tools4vb.de") End With With .Add("Roland Otter") .SubItems.Add("97618 Leutershausen") .SubItems.Add("09771 3747") .SubItems.Add("info@rosoft.de") End With With .Add("Max Mustermann") .SubItems.Add("99999 Musterstadt") .SubItems.Add("") .SubItems.Add("test@mustermann.de") End With End With ' ------------------------ ' Spaltenbreiten festlegen ' ------------------------ ' Breite der 1. und 2. Spalte autom. anhand ' des längsten Inhaltes festlegen ListView1.Columns(0).Width = -1 ListView1.Columns(1).Width = -1 ' Letzte Spalte = max. verfügbare Rest-Breite ListView1.Columns(3).Width = -2 End Sub