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 :

[C# VS 2005] multiple DatagridView - détection d'une édition


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut [C# VS 2005] multiple DatagridView - détection d'une édition
    Bonsoir,

    Je cherche un moyen de détecter les éditions de cellules parmis plusieurs, ces cellules appartenant à plusieurs DataGridView.

    A la création, la fenêtre principale ne contient aucune DataGridView. C'est à l'ouverture d'un fichier que celles-ci sont générées dynamiquement et je n'ai aucun moyen de savoir combien seront créées à priori. Impossible (du moins le crois-je) de lier un événement à des DataGridView qui n'existent pas.

    Après création et remplissage des DataGridView, l'utilisateur à la possibilité d'éditer une ou plusieurs cellules dans une ou plusieurs des DataGridView. Comment puis-je détecter l'édition d'une cellule, qui doit amener à un traitement particulier ?
    Il me faudrait détecter la modification du champ contenu dans la cellule afin de voir si c'est une vraie édition (le contenu à changé), y compris si l'utilisateur n'a pas validé son changement.

    Quelqu'un aurait-il déjà rencontré ce problème ou aurait une idée de comment faire ?

    Merci d'avance.

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    J'ai pas l'habitude d'utiliser les datagrid mais je sais qu'il y a obligatoirement un évènement qui est appelé à la modification d'un champ. As tu essayer CellvalueChanged ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut
    L'inconvénient est dans le fait que j'ai plusieurs DataGridView, dont je ne connais pas le nombre à priori, et que la méthode s'applique à une seule. Par contre, je sais que les DataGridView viendront dans une liste au fur et à mesure de leur création.
    Au départ, avant ouverture du fichier par l'utilisateur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    List<DataGridView> dgvList = new List<DataGridView>();
    ...
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dgv = new DataGridView();
    dgvList.Add(dgv);
    Comment faire alors pour quelle s'applique à tous les DataGridView de la liste ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut
    Maintenant que je commence à comprendre les "handlers", je comprends mieux ta suggestion, Kerod. J'ai essayé un truc du genre, à la création d'un nouveau DataGridView :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dgv.CellValueChanged += new DataGridViewCellEventHandler(dgv_CellValueChanged);
    et défini la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                int rowIndex= e.RowIndex;
                int dgvIndex= 1;
                dgvList[dgvIndex].Rows[rowIndex].Cells["FLAG"].Value = "T";
            }
    et ça fonctionne .. enfin presque car la modification d'une cellule entraine le changement de "X" en "T" dans la colonne "FLAG" mais que du DGV(1) pour le moment parce que j'ai pas encore trouvé comment savoir dans quel DGV je suis. J'y suis presque.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Par défaut
    essaye d'utiliser le nom des DataGrid, je me repere grace à a ca moi.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 15
    Par défaut
    Quel nom ? Mes DataGridView n'ont pas de noms, je les répére par numéro dans la liste.

    Je mis en place cette solution qui fonctionne : je boucle sur toutes les DataGridView de la liste et je récupére l'indice de celle qui correspond à celle qui a envoyé l'évenement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
            private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {
                int rowIndex = e.RowIndex;
                int i = 0;
                int dgvIndex = 0;
                while (i < dgvList.Count)
                {
                    if (sender.Equals(dgvList[i]))
                    {
                        dgvIndex = i;
                    }
                    i++;
                }
                dgvList[dgvIndex].Rows[rowIndex].Cells["FLAG"].Value = "T";
            }
    Merci à tous pour vos idées.

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

Discussions similaires

  1. [C#][VS 2005]Changer la couleur d'une ligne dans un DataGridView
    Par Mast3rMind dans le forum Windows Forms
    Réponses: 5
    Dernier message: 13/07/2006, 23h20
  2. [D5] Détection d'une nouvelle version à distance
    Par delphi5user dans le forum Web & réseau
    Réponses: 6
    Dernier message: 25/01/2006, 15h26
  3. Réponses: 4
    Dernier message: 19/10/2005, 23h30
  4. [SERVLET]envoi multiple d'img d'une servlet vers une JApplet
    Par reno.rkcrew dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 17/09/2005, 16h55
  5. Enregistrements multiples renvoyés à partir d'une excécution
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2004, 15h25

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