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

Signaler
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019
-
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019
-
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

Messages postés
6790
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 juin 2020
107
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

Messages postés
14881
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2020
413
Même question, tes 2 problèmes se résolvent aisement dans l’affirmative
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019

Désolé, je ne comprend pas ....
"Même question, tes 2 problèmes se résolvent aisément dans l’affirmative "
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019

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
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019

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 ...
Messages postés
6790
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 juin 2020
107
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


@+
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019

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 ??
Messages postés
6790
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
3 juin 2020
107
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019

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

Messages postés
14881
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
3 juin 2020
413
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
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019

Glup !!! Merci, je vais essayer de suite
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019

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
Messages postés
153
Date d'inscription
dimanche 27 août 2006
Statut
Membre
Dernière intervention
26 décembre 2019

EURÊKA !! J'ai trouvé !!!
Encore merci pour votre aide