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

Windows Forms Discussion :

DataGridView: tester si une ligne est sélectionnée


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut DataGridView: tester si une ligne est sélectionnée
    Bonjour,

    Je voudrais pouvoir mettre le Enabled d'un bouton à false ou à true en fonction d'un DataGridView.

    Si le DataGridView est vide ou bien si aucune ligne est sélectionnée, je mets mon bouton à false sinon à true.

    J'ai essayé ceci dans le load de ma form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (dataGridView .SelectedRows.Count >= 0)
                {
                    bouton.Enabled = true;
                }
                else
                    bouton.Enabled = false;
    mais ça ne fonctionne pas.

    Merci,

  2. #2
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Essayes avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ((dataGridView.CurrentRow == null) || (dataGridView.Rows.Count == 0))
    {
    	bouton.Enabled = false;
    }
    else
    {
    	bouton.Enabled = true;
    }
    ou en plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       bouton.Enabled = (dataGridView.CurrentRow != null) && (dataGridView.Rows.Count != 0);
    N'oubliez pas le tag et

  3. #3
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Merci.

    J'ai testé les 2 méthodes et ça ne fonctionne pas. Mon bouton reste grisé.

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Dans quel événement avez-vous mis le code proposé?

  5. #5
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    dans le load de ma form

  6. #6
    Membre expérimenté Avatar de callo
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Togo

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 887
    Points : 1 699
    Points
    1 699
    Par défaut
    Place un point d'arrêt dans ton code et dis-nous les valeur de dataGridView.CurrentRow et dataGridView.Rows.Count.
    N'oubliez pas le tag et

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Citation Envoyé par Jinkas Voir le message
    dans le load de ma form
    alors c'est normal, il faut le mettre sur un événement de changement de ligne / cellule du genre DataGridView.SelectionChanged

  8. #8
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    j'ai fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     private void dataGridView_SelectionChanged(object sender, EventArgs e)
            {
                SetupButtons();
            }
     
            private void SetupButtons()
            {
                bouton.Enabled = (dataGridView.RowCount > 0);
            }
    lorsque la form s'ouvre le bouton doit être false car par défaut aucune ligne doit être sélectionnée dans le datagridview. Le problème est que le bouton est toujours actif.

  9. #9
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    En faisant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            private void SetupButtons()
            {
               bouton.Enabled = (datagridview.SelectedRows.Count > 0);
     
            }
    j'ai, à peu près ce que je veux sauf que la sélection doit se faire sur toute la ligne alors que j'aurai voulu le faire sur une cellule seulement

  10. #10
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    273
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 273
    Points : 46
    Points
    46
    Par défaut
    Après avoir rempli le datagridview dans le load, j'annule la sélection des cellules sélectionnées avec ClearSelection()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datagridview.ClearSelection();
    et je fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private void datagridview_SelectionChanged(object sender, EventArgs e)
            {
                SetupButtons();
            }
     
            private void SetupButtons()
            {
                bouton.Enabled = (datagridview.SelectedCells.Count > 0);
            }
    Merci,

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

Discussions similaires

  1. [XL-2010] Tester si une ligne est vide
    Par Enzototo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/02/2015, 23h04
  2. ligne grisée lorsqu'une cellule est sélectionnée
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/10/2011, 10h40
  3. Réponses: 2
    Dernier message: 14/08/2011, 22h39
  4. Comment tester qu'une ligne d'un Msflexgrid est vide
    Par bahboubacar2 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 27/03/2010, 12h36
  5. Réponses: 3
    Dernier message: 31/03/2009, 04h59

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