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 14.217 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats sevOutBar 4.0 ![]() Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
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. |