Annuler la frappe d'une case a cocher dans une DataGridView

Résolu
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019 - 1 sept. 2019 à 07:39
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019 - 2 sept. 2019 à 09:06
Bonjour,
Quand je clique dans la case à cocher d'un DataGridView je lance l’exécution d'un traitement
Mais il ne doit pouvoir s'effectuer que sous condition
J'arrive facilement à lancer ou non ce traitement selon la condition, mais comment annuler la frappe si la condition n'est pas remplie ?

Exemple :
la case à cocher est vide
Je clique
La condition n'est remplie
Je ne fait pas pas le traitement
La case a cocher reste vide (C'est ce que je n'arrive pas à faire, elle devient cochée)

Merci pour votre aide

10 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 sept. 2019 à 16:04
Bonjour,

pour décocher mettre ceci:

 For i As Integer = 0 To DataGridView1.RowCount - 1
            If DataGridView1.Item(5, i).Selected = True Then  '5 colonne où se trouvent les checkbox
                DataGridView1.Item(5, i).Value = False
            End If
        Next

1
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
1 sept. 2019 à 10:23
Même question, tes 2 problèmes se résolvent aisement dans l’affirmative
0
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019
1 sept. 2019 à 10:29
Désolé, je ne comprend pas ....
"Même question, tes 2 problèmes se résolvent aisément dans l’affirmative "
0
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019
1 sept. 2019 à 16:14
Merci pour l'aide, mais ce code je peux le faire sur un bouton, mais pas dans le contexte tel que je l'ai décrit
Je veux pouvoir annuler de suite la frappe dans une case à cocher d'un DataGridView
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019
1 sept. 2019 à 16:26
J'ai presque trouvé la solution ....
Je rétablit les valeurs dans l'événement CellLeave
Mais cet événement ce déclenche quand l'utilisateur clique ailleur ...
S'il laisse le pointeur dans la case a cocher, rien ne se passe ....

Comment provoquer l'événement CellLeave ?

J'ai fait un CALL a un bouton ou sélectionné une autre datagridview, mais cela n'active pas l'événement ...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 sept. 2019 à 16:28
essaie ceci:

  Private Sub DataGridView1SelectAll_CurrentCellDirtyStateChanged(
   ByVal sender As Object,
   ByVal e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged

        RemoveHandler DataGridView1.CurrentCellDirtyStateChanged,
            AddressOf DataGridView1SelectAll_CurrentCellDirtyStateChanged
       
        If TypeOf DataGridView1.CurrentCell Is DataGridViewCheckBoxCell Then
            DataGridView1.EndEdit()
            Dim Checked As Boolean = CType(DataGridView1.CurrentCell.Value, Boolean)
            If Checked Then
                Dim message As String = _
            "Voulez vous décocher?"
                Dim caption As String = "Cocher-Décocher"
                Dim result = MessageBox.Show(message, caption, _
                                             MessageBoxButtons.YesNo, _
                                             MessageBoxIcon.Question)
                For i As Integer = 0 To DataGridView1.RowCount - 1
                    If DataGridView1.Item(5, i).Selected = True Then  '5 colonne où se trouve la checkbox
                        DataGridView1.Item(5, i).Value = False
                    End If
                Next
                ' If the no button was pressed ...
                If (result = DialogResult.No) Then
                    For i As Integer = 0 To DataGridView1.RowCount - 1
                        If DataGridView1.Item(5, i).Selected = True Then  '5 colonne où se trouve la checkbox
                            DataGridView1.Item(5, i).Value = True
                        End If
                    Next
                End If
            Else
                MessageBox.Show("vous avez décoché")
            End If
        End If

        AddHandler DataGridView1.CurrentCellDirtyStateChanged,
            AddressOf DataGridView1SelectAll_CurrentCellDirtyStateChanged
    End Sub


@+
0
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019
1 sept. 2019 à 16:38
Merci beaucoup, cela semble convenir
Je vais essayer de l'adapter à mon cas

J'ai fait un post pour le tri sur 2 colonne dans un DataGridView Avez-vous une idée ??
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 sept. 2019 à 17:51
0
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019
2 sept. 2019 à 07:07
Bonjour,
Je vais étudier le lien proposé C'est du C mais je vais m'efforcer de l'adapter, si je comprend ...
J'ai adapté le code fournit pour neutraliser la frappe sur une case a cocher
Çà marche parfaitement, encore merci

Une petite astuce, au lieu de faire une boucle sur le DataGridView, il vaut mieux mémoriser la ligne incriminée

rowIndex = dgvFiche.CurrentCell.RowIndex

0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
2 sept. 2019 à 07:34
Bonjour

ça n'est pas du C, mais du C#.
VB.Net, est en fait du C# avec "une peau" VB.
De plus en haut du site, tu peux choisir le langage des exemples
0
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019
2 sept. 2019 à 08:10
Glup !!! Merci, je vais essayer de suite
0
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019
2 sept. 2019 à 08:51
Pouvez-vous m'aider ?
J'ai créer un projet et j'ai fait fonctionner l'exemple propose
Si les noms sont égaux, on les classe en fonction du prénom
Les noms sont triés en ordre croissant ou décroissant

Dans mon cas, je voudrai que ce soit les prénoms qui soient mis en ordre croissant
Comment faire ?
Merci d'avance
0
scn68100 Messages postés 153 Date d'inscription dimanche 27 août 2006 Statut Membre Dernière intervention 26 décembre 2019
2 sept. 2019 à 09:06
EURÊKA !! J'ai trouvé !!!
Encore merci pour votre aide
0
Rejoignez-nous