Rubrik: Controls · ListBox & ComboBox | VB-Versionen: VB2005, VB2008 | 13.02.09 |
Der nachfolgende Tipp zeigt, wie Sie die Höhe eines ListBox-Steuerelements automatisch an die minimal benötigte Höhe aller in der Liste enthaltenen Einträge anpassen können.
Optional kann eine Mindestanzahl sichtbarer Elemente bzw. max. Anzahl sichtbarer Elemente festgelegt werden.
''' <summary>
''' Passt die Höhe der ListBox autom. an die Anzahl Elemente an
''' </summary>
''' <param name="LB">ListBox</param>
''' <param name="minItems">Optional. Min. Anzahl sichtbarer Einträge</param>
''' <param name="maxItems">Optional. Max. Anzahl sichtbarer Einträge</param>
Public Sub LBAutoSizeHeight(ByVal LB As ListBox, _
Optional ByVal minItems As Integer = 0, _
Optional ByVal maxItems As Integer = 0)
With LB
' Höhe aller Einträge
Dim nHeight As Integer = .Items.Count * .ItemHeight
' Rahmen der ListBox berücksichtigen
Dim bHeight As Integer = .Height - .ClientSize.Height
' mind. x Einträge sichtbar?
If minItems > 0 AndAlso nHeight < minItems * .ItemHeight Then
nHeight = minItems * .ItemHeight
End If
' max. x Einträge sichtbar?
If maxItems > 0 AndAlso nHeight > maxItems * .ItemHeight Then
nHeight = maxItems * .ItemHeight
End If
' ListBox-Höhe setzen
.IntegralHeight = False
.Height = nHeight + bHeight
End With
End Sub
Aufrufbeispiel:
' ListBox mit 5 Einträgen
For i As Integer = 1 To 5
ListBox1.Items.Add("Eintrag " & CStr(i))
Next
' Höhe autom. anpassen, dass exakt diese 5 Einträge sichtbar sind
LBAutoSizeHeight(ListBox1)
' ListBox mit 10 Einträgen
For i As Integer = 1 To 10
ListBox1.Items.Add("Eintrag " & CStr(i))
Next
' Höhe autom. anpassen, dass mind. 6 und max. 8 Einträge sichtbar sind
LBAutoSizeHeight(ListBox1, 6, 8)