Heute stellen wir Ihnen eine Klasse vor, die die Standard-CheckedListBox dahingehend erweitert, dass man festlegen kann, wieviele Einträge der User maximal selektieren (auswählen) darf. Weiterhin stellt die Klasse auch eine Eigenschaft zur Verfügung, die die aktuelle Anzahl selektierter Einträge zurückgibt. Public Class CheckedListBoxEx Inherits CheckedListBox ' Anzahl aktuell markierter Einträge Private _CheckedCount As Integer = 0 ' Anzahl max. selektierbarer Einträge Private _MaxCheckedItems As Integer = 0 ''' <summary> ''' Gibt die Anzahl der Einträge zurück, die aktuell selektiert sind. ''' </summary> Public ReadOnly Property CheckedCount() As Integer Get Return _CheckedCount End Get End Property ''' <summary> ''' Legt die Anzahl Einträge fest, die ausgewählt werden dürfen. ''' </summary> Public Property MaxCheckedItems() As Integer Get Return _MaxCheckedItems End Get Set(ByVal value As Integer) _MaxCheckedItems = value ' ggf. zuviel selektierte Einträge deselektieren If value > 0 AndAlso value < CheckedCount Then With Me.Items For i As Integer = .Count - 1 To 0 Step -1 If Me.GetItemCheckState(i) <> CheckState.Unchecked Then Me.SetItemCheckState(i, CheckState.Unchecked) If _CheckedCount <= value Then Exit For End If Next End With End If End Set End Property ''' <summary> ''' Aktualisiert die Anzahl aktuell selektierter Einträge ''' </summary> ''' <remarks>Diese Prozedur sollte aufgerufen werden, wenn die ''' Liste via Clear-Aufruf gelöscht wurde bzw. einzelne Listen-Einträge ''' via Remove-Methode aus der Liste entfernt wurden.</remarks> Public Sub RefreshCount() _CheckedCount = 0 For i As Integer = 0 To Me.Items.Count - 1 If Me.GetItemCheckState(i) <> CheckState.Unchecked Then _CheckedCount += 1 End If Next End Sub Private Sub CheckedListBoxEx_ItemCheck(ByVal sender As Object, _ ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles Me.ItemCheck If e.NewValue = CheckState.Checked Then ' Prüfen, ob die max. zulässige Anzahl erreicht... If MaxCheckedItems > 0 AndAlso CheckedCount >= MaxCheckedItems Then ' Auswahl unterbinden e.NewValue = CheckState.Unchecked Else ' Anzahl ausgewählter Elemente um 1 erhöhen _CheckedCount += 1 End If Else ' Anzahl ausgewählter Elemente um 1 verringern _CheckedCount -= 1 End If End Sub End Class Beispiel: ' es dürfen nur max. 3 Einträge gleichzeitig selektiert werden Me.CheckedListBox1.MaxCheckedItems = 3 Hinweis: Dieser Tipp wurde bereits 13.667 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 April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) |
||||||||||||||||
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. |