|
Tipp 0106
|
Mehrspaltige ListBox
|
|
|
Autor/Einsender: Datum: |
|
Michael Werner 11.02.2006 |
|
Entwicklungsumgebung: |
|
VB.Net 2003 |
Framework: |
|
1.1 |
|
|
Oft erwünscht und mit Anzeigekonstanten wie z. B. vbTab nie sauber hinzukriegen, ist eine Spaltendarstellung in einer Listbox
bzw. ComboBox. Mit Hilfe des Ereignisses DrawItem der ListBox ist ein genaues Positionieren der Spalten möglich.
Das Ereignis DrawItem wird ausgelöst, wenn die DrawMode-Eigenschaft der ListBox auf DrawMode.OwnerDrawFixed
gestellt wird. Dadurch ist es möglich, in diesem Event per DrawString die Listboxeinträge zu zeichnen und mit dem
vorletzten Parameter
(x-Position) einen Spaltenabstand zu definieren.
|
|
|
Private Sub ListBox1_DrawItem(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DrawItemEventArgs) _
Handles ListBox1.DrawItem
If e.Index < 0 Then Exit Sub
' Person-Objekt ermitteln
Dim pers As Person = DirectCast(ListBox1.Items(e.Index), Person)
' Brush zum Zeichnen des Textes
Dim brush1 As New SolidBrush(e.ForeColor)
' Hintergrund zeichnen
e.DrawBackground()
' Text für Eigenschaft Name ausgeben
e.Graphics.DrawString(pers.Name, ListBox1.Font, brush1, _
e.Bounds.X, e.Bounds.Y)
' Text für Eigenschaft Email ausgeben
e.Graphics.DrawString(pers.Email, ListBox1.Font, brush1, _
e.Bounds.X + 150, e.Bounds.Y)
' Text für Eigenschaft Alter ausgeben
e.Graphics.DrawString(pers.Alter, ListBox1.Font, brush1, _
e.Bounds.X + 300, e.Bounds.Y)
' Ressourcen freigeben
brush1.Dispose()
End Sub
|
|
|
|
|
Windows-Version |
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
|
Download (7,7
kB)
|
Downloads bisher: [ 788 ]
|
|
|