1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| 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 |
Partager