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 :

Méthode pour rendre un évênement paramétrable


Sujet :

C#

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut Méthode pour rendre un évênement paramétrable
    Bonjour à tous,

    j'ai dans ma form 6 combo et 6 textbox qui reprennent un code couleur et un libellé couleur chacune.
    j'ai mis à côté de chaque textbox, un bouton pour supprimer une couleur (en fait ce sont des boîtes sur lesquelles on peut mettre plusieurs couleurs, d'où les 6 combo et textbox).

    Voici mon code pour mes boutons "supprimer" :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     private void button1_Click_1(object sender, EventArgs e)
            {
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                iDCouleur1ComboBox.SelectedItem = null;
                ValeursComboCouleurs(iDCouleur1ComboBox, libelle_couleurTextBox1);
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                iDCouleur2ComboBox.SelectedItem = null;
                ValeursComboCouleurs(iDCouleur2ComboBox, libelle_couleurTextBox2);
            }
     
            private void button3_Click(object sender, EventArgs e)
            {
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                iDCouleur3ComboBox.SelectedItem = null;
                ValeursComboCouleurs(iDCouleur3ComboBox, libelle_couleurTextBox3);
            }
     
            private void button4_Click(object sender, EventArgs e)
            {
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                iDCouleur4ComboBox.SelectedItem = null;
                ValeursComboCouleurs(iDCouleur4ComboBox, libelle_couleurTextBox4);
            }
     
            private void button5_Click(object sender, EventArgs e)
            {
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                iDCouleur5ComboBox.SelectedItem = null;
                ValeursComboCouleurs(iDCouleur5ComboBox, libelle_couleurTextBox5);
            }
     
            private void button6_Click(object sender, EventArgs e)
            {
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                iDCouleur6ComboBox.SelectedItem = null;
                ValeursComboCouleurs(iDCouleur6ComboBox, libelle_couleurTextBox6);
            }
    Comment pourrais-je faire pour rendre ça moins répétitif dans le code? Y a-t-il moyen de regrouper tout ça dynamiquement du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for (int i= 0;i<=6;i++)
    {
           private void button + i + _Click(object sender, EventArgs e)
            {
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                iDCouleur + i + 6ComboBox.SelectedItem = null;
                ValeursComboCouleurs(iDCouleur + i + ComboBox, libelle_couleurTextBox + i + );
            }
    }
    D'avance merci

  2. #2
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     private void button_Click(object sender, EventArgs e)
            {
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
     
                 if (sender is iDCouleur2ComboBox)
                 {
                      iDCouleur2ComboBox.SelectedItem = null;
                      ValeursComboCouleurs(iDCouleur2ComboBox, libelle_couleurTextBox2);
                  }
                  else if (sender is iDCouleur3ComboBox)
                   {
                    ....
                    }
               }
    Et tu abonne l'événement click de tous tes boutons à cet méthode

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Ok, mais du coup le designer va me générer le même évenement pour tout mes boutons, non? Ca risque pas de poser problème?
    Enfin, je teste et je reviens avec mes résultats.

    Merci.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Oui, ok, ça fonctionne d'une certaine façon.
    Voici comment j'ai fait.
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     private void button_supprimer_Click(object sender, EventArgs e)
            {
     
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                switch (((Button)sender).Name)
                {
                    case "button1":
                        iDCouleur1ComboBox.SelectedItem = null;
                        ValeursComboCouleurs(iDCouleur1ComboBox, libelle_couleurTextBox1, button1);
                        break;
                    case "button2":
                        iDCouleur2ComboBox.SelectedItem = null;
                        ValeursComboCouleurs(iDCouleur2ComboBox, libelle_couleurTextBox2, button1);
                        break;
                    case "button3":
                        iDCouleur3ComboBox.SelectedItem = null;
                        ValeursComboCouleurs(iDCouleur3ComboBox, libelle_couleurTextBox3, button1);
                        break;
                    case "button4":
                        iDCouleur4ComboBox.SelectedItem = null;
                        ValeursComboCouleurs(iDCouleur4ComboBox, libelle_couleurTextBox4, button1);
                        break;
                    case "button5":
                        iDCouleur5ComboBox.SelectedItem = null;
                        ValeursComboCouleurs(iDCouleur5ComboBox, libelle_couleurTextBox5, button1);
                        break;
                    case "button6":
                        iDCouleur6ComboBox.SelectedItem = null;
                        ValeursComboCouleurs(iDCouleur6ComboBox, libelle_couleurTextBox6, button1);
                        break;
                }
                //if (sender == this.iDCouleur1ComboBox)
                //{
                //    iDCouleur1ComboBox.SelectedItem = null;
                //    ValeursComboCouleurs(iDCouleur1ComboBox, libelle_couleurTextBox1, button1);
                //}
            }
    Mais ce qui serait bien, ce serait de pouvoir donner les noms des contrôles dynamiquement dans une boucle pour pouvoir n'avoir que 5-6 lignes de codes... Mais je sais pas trop comment.
    QQn une idée?

  5. #5
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    Tu pourrais utiliser la propriété Tag de tes contrôle pour y stocker un identifiant (1, 2, 3, ....).
    Ensuite, tu utilise la collection de controls du container contenant tes combox et tes textbox, puis tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     private void button_supprimer_Click(object sender, EventArgs e)
            {
     
                rowCurrent = ((DataRowView)clichesBindingSource.Current).Row as Suivi_cliches_formes.Datasets.DS_cliches_formes.ClichesRow;
                string idControl = ((Button)sender).Tag.ToString();
     
                ComboBox iDCouleurCombo = monContainer.Controls["iDCouleur" + idControl + "Container"];
                 TextBox txtCouleur = monContainer.Controls["libelle_couleurTextBox" + idControl];
     
                  iDCouleurCombo.SelectedItem = null;
                  ValeursComboCouleurs(iDCouleurCombo, txtCouleur, (TextBox)sender);
     
            }

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 156
    Par défaut
    Ben voilà, ça c'est ce que j'appelle une réponse simple, rapide et efficace car tout fonctionne.
    Je te remercie énormément pour ton aide.

    Donc pour rappeler :

    1. mettre un tag sur chacun de mes boutons "supprimer".
    2. créer la méthode de suppression
    3. ajouter un handler de cette méthode sur l'évênement click des boutons


    Au plaisir

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

Discussions similaires

  1. Les token pour rendre dynamique un paramètre
    Par mederik dans le forum Cognos
    Réponses: 5
    Dernier message: 27/04/2012, 18h08
  2. Méthode pour modifier un paramètre
    Par hajermi dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 22/10/2009, 09h29
  3. Réponses: 12
    Dernier message: 14/04/2009, 08h56
  4. Réponses: 1
    Dernier message: 23/11/2007, 11h53
  5. [D7] Méthode pour paramétrer une application
    Par paros59 dans le forum Delphi
    Réponses: 6
    Dernier message: 18/06/2007, 23h50

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