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

C# Discussion :

évènement Click des boutons créés dynamiquement


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Par défaut évènement Click des boutons créés dynamiquement
    Bonjour tout le monde
    ça fait quelques jours que je débloque sur ce problème.Bon je m'explique:j'ai une liste des boutons que je crée dynamiquement selon le nombre des lignes existant dans ma table de ma base de données.Et je veux quand je clique sur un de ces boutons un affichage d'une table de ma base de données s'affiche dans une datagridview.
    A noter que tous mes boutons dynamiques ont la même datagridview et je quand je clique sur chaque bouton l'affichage change dans cette datagridview.
    J'espère que tout est clair
    voilà mon code
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    for (i=0;i<nbreligne-1;i++)
                {
     
     
     
     
    Button btn  = newButton();
     
     
    EventHandler myHandler = newEventHandler(this.btn_Click);
     
                    btn.Click += myHandler;
     
                    btn.Parent = pnlBtnFamille;
                    btn.Location = newPoint(6 + j, 5);
                    btn.Width = 76;
                    btn.Height = 55;
                    btn.ForeColor = Color.Black;
                    btn.Font = newFont(FontFamily.GenericSansSerif, 8.25F, FontStyle.Bold);
                    btn.Text = (string)dgvListeFamille.Rows[i].Cells[1].Value;
                    btn.Name = (string)dgvListeFamille.Rows[i].Cells[1].Value;
                    btn.Tag = dgvListeFamille.Rows[i];
                    btn.ImageAlign = ContentAlignment.TopLeft;
                    btn.TextAlign = ContentAlignment.BottomCenter;
                    btn.Size = new System.Drawing.Size(76, 55);
                    pnl_articles.Controls.Add(btn);
                    j = j + 76;
                }
    et mon évènement Click
    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
    17
     
    void btn_Click(Object sender, System.EventArgs e)
            {
    int id_famille = 0;
    Button btnClicked = (Button)sender;
     
    for (int i = 0; i <= dgvListeFamille.Rows.Count-1; i++)
                {
                    id_famille = (int)dgvListeFamille.Rows[i].Cells[0].Value ;
                    ar.AffichInfoArticle(id_famille, bindingSource4, dgvArticles);
     
     
     
                }
     
     
    }
    J'espère que quelqu'un me réponde.J'ai cherché partout et j'ai publié dans plusieurs forums mais envain.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2009
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2009
    Messages : 229
    Par défaut
    La logique sur lequel t'as basé est juste, c'est ça qu'il faut faire ... mais :
    1. Les bouttons sont-elles bien crées ?
    2. T'as des erreurs ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Ce serait plus facile de t'aider si tu nous disais ce qui ne fonctionne pas...

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Par défaut
    quand j'enlève la boucle et je joue sur un seul bouton j'ai le bon affichage dans la datagridview, mais quand je mets la boucle j'obtiens une exception sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    id_famille=(int)dgvListeFamille.Rows[i].cells[0].value
    Voilà l'exception:
    La référence d'objet n'est pas définie à une instance d'objet.
    Je ne comprends pas pourquoi ça ne fonctionne pas.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 537
    Par défaut
    Ce serait pas parce qu'automatiquement tu n'a qu'une ligne sur ton datagridview.

    Du coup la première fois ça mais dés que i passe à i tu à une erreur car row[1] n'existe pas.

    Essaye d'ajouter une ligne à ton datagridview juste avant.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par NejNej Voir le message
    Ce serait pas parce qu'automatiquement tu n'a qu'une ligne sur ton datagridview.

    Du coup la première fois ça mais dés que i passe à i tu à une erreur car row[1] n'existe pas.

    Essaye d'ajouter une ligne à ton datagridview juste avant.
    Non, les indexeurs de Rows et Cells lèvent une ArgumentOutOfRangeException si l'index est hors-limites, donc ça doit pas être ça...

    Ca doit être parce que la cellule est vide (Value = null), et donc le cast en int (qui est un type valeur) provoque une NullReferenceException

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/05/2008, 23h22
  2. Affectation de macros à des boutons créés dynamiquement
    Par JM_Cholet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/07/2007, 14h09
  3. Réponses: 9
    Dernier message: 28/10/2005, 13h48
  4. problème d'accès a des éléments créés dynamiquement
    Par Pymm dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/07/2005, 17h13
  5. Erreur EACCESSVIOLATION avec des compsts créés dynamiquement
    Par tsikpemoise dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/02/2004, 19h05

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