Annuler la frappe d'une case a cocher dans une DataGridView [Résolu]

Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
- - Dernière réponse : scn68100
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 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
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
6209
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2019
86
1
Merci
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

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Le Pivert
Messages postés
13730
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2019
302
0
Merci
Même question, tes 2 problèmes se résolvent aisement dans l’affirmative
Commenter la réponse de Whismeril
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
Désolé, je ne comprend pas ....
"Même question, tes 2 problèmes se résolvent aisément dans l’affirmative "
Commenter la réponse de scn68100
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
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
Commenter la réponse de scn68100
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
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 ...
cs_Le Pivert
Messages postés
6209
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
17 septembre 2019
86 -
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


@+
Commenter la réponse de scn68100
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
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 ??
Commenter la réponse de scn68100
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
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

Whismeril
Messages postés
13730
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 septembre 2019
302 -
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
Commenter la réponse de scn68100
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
Glup !!! Merci, je vais essayer de suite
Commenter la réponse de scn68100
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
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
Commenter la réponse de scn68100
Messages postés
142
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
17 septembre 2019
0
Merci
EURÊKA !! J'ai trouvé !!!
Encore merci pour votre aide
Commenter la réponse de scn68100