La classe myCheckedListBox hérite de CheckedListBox et permet de limiter le nombre d'items selectionnés dans la liste.
Un évènement Depassement est généré lorsque l'utilisateur dépasse le nombre autorisé.
Source / Exemple :
Imports System
Imports System.Windows
Imports System.Windows.Forms
'-----------------------------------------------------------------
' Classe : myCheckedListBox
' derrivée de CheckedListBox
'
' Cette classe permet de limiter le nombre d'items selectionnés
' dans la liste.
'
' Evenement Depassement : Boolean
'
' Philippe Casasnovas
' Décembre 2003
'-----------------------------------------------------------------
Public Class myCheckedListBox
Inherits CheckedListBox
Private _MaxSelectedItem As Integer ' Nombre maximum d'items selectionnables
Public Event Depassement(ByVal Resultat As Boolean) ' Evènement pour voir si l'utilisateur a depassé la selection maximum
' Nombre maximum d'items selectionnables
Public Property MaxSelectedItem() As Integer
Get
Return _MaxSelectedItem
End Get
Set(ByVal Value As Integer)
_MaxSelectedItem = Value
End Set
End Property
' Constructeur
Public Sub New()
MyBase.New()
MaxSelectedItem = 5 ' Nombre d'items selectionnables par défaut
End Sub
' Verrifie le nombre d'items selectionnés
' Si le nombre est superieur, met la selection de la ligne à false.
' Déclenche ensuite l'évènement Depassement
Private Sub Verrification()
Dim Item As Integer
Dim Count As Integer
For Each Item In Me.Items
If Me.GetItemCheckState(Item) = CheckState.Checked Then
Count = Count + 1
End If
Next
If Count > _MaxSelectedItem Then
Me.SetItemChecked(SelectedIndex, False)
RaiseEvent Depassement(True)
Else
RaiseEvent Depassement(False)
End If
End Sub
' On test au changement d'index selectionné
Private Sub myCheckListBox_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SelectedIndexChanged
Verrification()
End Sub
' On test au mousedown de la souris
Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
Verrification()
End Sub
' On test au keypress en cas de selection par la barre d'espace
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
MyBase.OnKeyPress(e)
Verrification()
End Sub
Protected Overrides Sub RefreshItem(ByVal index As Integer)
End Sub
Protected Overrides Sub SetItemsCore(ByVal items As System.Collections.IList)
End Sub
End Class
Conclusion :
Tous commentaires seront les bienvenus.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.