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
|
Public Class Form1
Private AllChecked As Boolean
Private ItemChecked As Boolean
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim lv1 As New ListViewItem
lv1.Text = "1"
Dim lv2 As New ListViewItem
lv2.Text = "2"
ListView1.Items.Add(lv1)
ListView1.Items.Add(lv2)
End Sub
Private Sub ListView1_ItemChecked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckedEventArgs) Handles ListView1.ItemChecked
If AllChecked = False Then
'ici on va définir un état à la variable ItemChecked pour savoir si le gestionnaire d'évènement CheckBox1_CheckedChanged doit cocher ou non les cases de Listview1
ItemChecked = True
'On modifie l'état de la checkbox1 mais sans exécuter le code contenu dans son gestionnaire d'évènement
CheckBox1.Checked = If(ListView1.Items.Cast(Of ListViewItem).Any(Function(f) f.Checked = False), False, True)
'On redéfinie l'état à false pour pouvoir exécuter de nouveau le code du gestionnaire d'évènement CheckBox1_CheckedChanged lors d'un futur click sur la checkbox1
ItemChecked = False
End If
End Sub
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
'On définie la variable AllChecked à True pour ne pas exécuter le code du gestionnaire d'évent ListView1_ItemChecked
AllChecked = True
If ItemChecked = False Then
For Each it In ListView1.Items
it.checked = CheckBox1.Checked
Next
End If
'On définie la variable AllChecked à false pour exécuter de nouveau le code dans le gestionnaire d'évent ListView1_ItemChecked lorsqu'on coche une case du listview1
AllChecked = False
End Sub
End Class |