IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Datagridview et checkbox


Sujet :

VB.NET

  1. #1
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut Datagridview et checkbox
    Bonjour,

    Dans un datagridview j'ai plusieurs colonnes "checkbox"

    Quand je clique sur une des checkbox, je souhaite faire une opération en fonction de l'état coché ou non du checkbox sur lequel j'ai cliqué.

    J'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub DataGridView3_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView3.CellContentClick
     
            Dim col As String
            col = DataGridView3.CurrentCell.ColumnIndex
     
            If DataGridView3.Rows(0).Cells(col).Value = True Then
                MsgBox("toto")
            End If
     
        End Sub
    J'ai un message d'erreur
    La colonne nommée 4 est introuvable. Nom du paramètre : columnName
    , alors que c'est bien la colonne "4" qui est retournée par currentcell.

    Avez-vous une idée du problème?
    J'ai l'impression que le message d'erreur vient du fait que je regarde l'état du checkbox alors qu'il est en train de changer de valeur

    Je vous remercie

  2. #2
    Membre chevronné
    Avatar de Ogotcha
    Inscrit en
    Juillet 2008
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juillet 2008
    Messages : 232
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView3.Rows(0).Cells(col)
    Ici ta variable col doit être de type Integer

    Et voici ta déclaration :

    Donc tu as en col "4" de type String et non pas 4 en type Integer

    [EDIT]
    Au passage dans l'événement CellContentClick tu as la variable "e" de type DataGridViewCellEventArgs du pourra ainsi l'utiliser pour récupérer ton ColumnIndex via e.ColumnIndex (pas sur de l'orthographe de ColumnIndex)
    Mon Blog
    FAQs DotNet
    Fonction utile : Recherche

  3. #3
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut
    Bonjour Ogotcha,

    J'ai changé la variable "col" en integer, mais mon code ne fonctionne toujours pas!

    J'ai également essayé ceci comme tu me l'as indiqué:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If DataGridView3.Rows(e.RowIndex).Cells(e.ColumnIndex).Value = True Then
                MsgBox("toto")
            End If
    --> e.RowIndex et e.ColumnIndex renvoient bien la bonne ligne et colonne, mais dans aucun cas la condition est remplie.
    La valeur de la checkbox renvoyée est toujours "Nothing" au lieu de true ou false

    Par contre, si je teste si la valeur d'un autre checkbox que celui sur lequel j'ai cliqué, le code fonctionne correctement.

    Je n'y comprends plus rien

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Si le DataGridView n'est pas ReadOnly, quand tu clickes sur une CheckBox elle change de valeur.

    Dansce cas, pour éviter un comportement aléatoire, gére l'event CellValidating:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OldValue=Dgv.Rows(e.RowIndex).Cells(e.ColumnIndex).Value  // bool ou Nothing (avant click)
    NewValue=e.FormattedValue // String (suite au click)
    si tu ne veux pas changer la valeur :

  5. #5
    Membre confirmé Avatar de allergique
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 151
    Par défaut
    J'ai utilisé l'événement cellvalidating et ça fonctionne.

    Pour lancer immédiatement l'événement "cellvalidating " après le clic sur le checkbox j'ai ajouté une ligne pour mettre le focus sur un autre contrôle dans "CellContentClick"

    Merci à vous 2 pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Datagridview et checkbox
    Par Spellbinder dans le forum VB.NET
    Réponses: 6
    Dernier message: 22/02/2011, 12h34
  2. DatagridView et checkbox
    Par amirad dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/03/2009, 09h57
  3. DatagridView et checkbox
    Par amirad dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/03/2009, 11h21
  4. Modification d'une ligne d'un datagridview via checkbox
    Par DiamonDonald dans le forum Windows Forms
    Réponses: 7
    Dernier message: 08/04/2008, 23h42
  5. [VB.NET 2005] DataGridView et CheckBox
    Par nathanaelle dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/08/2006, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo