Anhand eines kleinen Beispiels möchten wir Ihnen zeigen, wie sich die Anzeige von Daten im Standard ListBox-Control von VB.NET mehrspaltig realisieren lässt. Die Daten selbst verwalten wir in einer kleinen Klasse mit folgenden Membern: ID, KundenNr, Name und Telefon. Public Class MyListData Private m_ID As Integer Private m_KundenNr As String Private m_Name As String Private m_Telefon As String ' Direktes Initialisieren mit Daten ermöglichen Public Sub New(ByVal ID As Integer, ByVal KundenNr As String, _ ByVal Name As String, ByVal Telefon As String) m_ID = ID m_KundenNr = KundenNr m_Name = Name m_Telefon = Telefon End Sub ' Eigenschaften Public Property ID() As Integer Get Return m_ID End Get Set(ByVal value As Integer) m_ID = ID End Set End Property Public Property KundenNr() As String Get Return m_KundenNr End Get Set(ByVal value As String) m_KundenNr = value End Set End Property Public Property Name() As String Get Return m_Name End Get Set(ByVal value As String) m_Name = value End Set End Property Public Property Telefon() As String Get Return m_Telefon End Get Set(ByVal value As String) m_Telefon = value End Set End Property Public Overrides Function ToString() As String Return m_Name End Function End Class Nun ziehen wir ein ListBox-Control auf die Form und füllen die Liste mit ein paar Testdaten: Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' ListBox mit Daten fülllen With ListBox1.Items .Add(New MyListData(1, "00001", "Otter Dieter", "(09708) 706247")) .Add(New MyListData(2, "00002", "Max Mustermann", "(00000) 99999")) .Add(New MyListData(3, "00003", "Hans Meier", "")) End With ' OwnerDraw setzen (wir zeichnen den Inhalt selbst!) ListBox1.DrawMode = DrawMode.OwnerDrawFixed End Sub Um die ListBox-Einträge mehrspaltig anzeigen zu können, müssen wir die DrawMode-Eigenschaft auf den Wert "DrawMode.OwnerDrawFixed" festlegen. Das bewirkt, dass bei jedem zu zeichnenden ListBox-Eintrag das DrawItem-Ereignis ausgelöst wird. Und das ist dann genau die richtige Stelle für unsere "Zeichenroutine". Private Sub ListBox1_DrawItem(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem ' ListBox-Eintrag selbst zeichnen ' Beispiel: 3 Spalten (KundenNr, Name und Telefon) If e.Index < 0 Then Exit Sub ' Daten, die angezeigt werden sollen Dim myData As MyListData = DirectCast(ListBox1.Items(e.Index), MyListData) ' Schriftart festlegen Dim oFont As Font = ListBox1.Font ' Brush-Objekt mit Farbwert für die Anzeige der Zeile Dim oBrush As New SolidBrush(e.ForeColor) ' Hintergrund des aktuellen Eintrags zeichnen e.DrawBackground() ' jetzt die einzelnen Texte in 3 Spalten anzeigen With e.Graphics ' KundenNr .DrawString(myData.KundenNr, oFont, oBrush, e.Bounds.X, e.Bounds.Y) ' Name (im vorgegebenen Rechteck zeichnen, damit letzte Spalte ' nicht "überschrieben" wird) .DrawString(myData.Name, oFont, oBrush, New RectangleF( _ e.Bounds.X + 50, e.Bounds.Y, e.Bounds.Right - e.Bounds.X - 132, e.Bounds.Height)) ' Telefon-Nr. .DrawString(myData.Telefon, oFont, oBrush, e.Bounds.X + e.Bounds.Width - 80, e.Bounds.Y) End With ' Objekte freigeben oBrush.Dispose() End Sub Starten Sie das Projekt - et voilà: Die Daten werden 3-spaltig in der ListBox angezeigt. Dieser Tipp wurde bereits 29.542 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Neu! sevPopUp 2.0 Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |