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.679 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. |
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 April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 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. |