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.639 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 März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Neu! sevEingabe 3.0 Einfach stark! Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox 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. |