Compter le nombre de CheckedBox activé dans un DataGridView
Bonjour à tous, je reviens avec une question mais cette fois je n'y arrive vraiment pas :
Tous d'abord pour présenter un peu le contexte, l'utilisateur à la possibilité d'activer ou désactiver chacune de ces ChekedBox en directement depuis le DataGridView, j'ai aussi une bouton qui sélectionne (active) toutes les CheckedBox et un autre qui désactive.
Ca ne semble vraiment pas compliqué et pourtant j'ai un mal fou à trouver la solution. en effet lorsque je sélectionne par exemple 2 case à cochées et ensuite je clique sur le bouton pour les désactiver "countSelected" me compte non pas 0 mais 4 CheckedBox activé du fait que je ne récupère pas la bonne valeur du CheckedBox dans l'event CellValueChanged.
Code:
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
|
Private Sub DataGridView1_CurrentCellDirtyStateChanged(sender As Object, e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged
If DataGridView1.IsCurrentCellDirty Then
DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit)
End If
End Sub
Private countSelected As Integer
Private Sub DataGridView1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
If DataGridView1.Columns(e.ColumnIndex).Name = "MaColonne" And TypeOf (DataGridView1.CurrentCell) Is DataGridViewCheckBoxCell Then
Dim checkBoxCell As DataGridViewCheckBoxCell = CType(DataGridView1.CurrentCell, DataGridViewCheckBoxCell)
Dim Selec As Boolean = CBool(checkBoxCell.Value)
If Selec Then
countSelected += 1
Else
countSelected -= 1
End If
'MessageBox.Show(CStr(countSelected))
End If
End Sub
Private Sub btDeselectAll_Click(sender As Object, e As EventArgs) Handles btDeselectAll.Click
For Each Row As DataGridViewRow In DataGridView1.Rows
If Not Row.Cells("MaColonne").ReadOnly = True Then
Dim Selec As Boolean = CBool(Row.Cells("MaColonne").Value)
If Selec Then
Row.Cells("MaColonne").Value = False
End If
End If
Next
MessageBox.Show(CStr(countSelected))
End Sub |
Merci beaucoup pour votre aide.