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 :

Créer plusieurs boutons a partir d'une BD


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Créer plusieurs boutons a partir d'une BD
    salut ,
    je veux crée plusieurs bouton à partir du nombre de ligne du requête,
    puis je veux tester si le bouton 1 sélectionner j'affiche une liste de bouton et si le bouton 2 sélectionner j'affiche une autres liste de bouton .
    le problème que je ne connais pas comment distincte entre les boutons crées dans une boucle for.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            private Telerik.WinControls.UI.RadToggleButton btn;
            private Telerik.WinControls.UI.RadButton btn_article;
     this.btn = new Telerik.WinControls.UI.RadToggleButton();
                    ((System.ComponentModel.ISupportInitialize)(this.btn)).BeginInit();
                    this.btn.Location = new System.Drawing.Point(150+(i*120), 220);
                    this.btn.Name = "btn_famT"+i;
                    this.btn.Size = new System.Drawing.Size(100, 23);
                    this.btn.TabIndex = 2;
                    this.btn.Text = nom;
                    this.Controls.Add(this.btn);
                    this.btn.ToggleStateChanging+=new Telerik.WinControls.UI.StateChangingEventHandler(this.btn_ToggleStateChanging);
                    ((System.ComponentModel.ISupportInitialize)(this.btn)).EndInit();
    et dans l'appel du methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            private void btn_ToggleStateChanging(object sender, Telerik.WinControls.UI.StateChangingEventArgs args)
            {
                if (btn.ToggleState == ToggleState.On)
                    btn.ToggleState = ToggleState.Off;
            }
    est-ce que quelqu'un peut m'aider , et merci d'avance

  2. #2
    Membre éclairé Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Points : 755
    Points
    755
    Par défaut
    Si tu connais en avance le nombre de bouton qu'il faudra créer, utilise un tableau de bouton: chaque bouton est donc repérer par une indice.
    Ou encore, tu peux aussi utiliser un List<Button>: tu crees un bouton btn1 , ensuite tu l'empile dans la liste instance List<Button>.add(btn1);

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    le problème que je ne connais pas le nombre de bouton , et dans la partie déclaration , comment je peut déclarais les N boutons ??

    le première code est dans un boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for( int i = 1 ;i<= PARAMETRES.gestion.FAMILLE_P.NB_TYPE(true);i++)
                  {
                      this.btn = new Telerik.WinControls.UI.RadToggleButton();
                    ((System.ComponentModel.ISupportInitialize)(this.btn)).BeginInit();
                    this.btn.Location = new System.Drawing.Point(150+(i*120), 220);
    .....................................
                  }

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Pour ajouter plusieurs boutons dynamiquement, ton code devrait selon moi, ressembler à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for( int i = 1 ;i<= PARAMETRES.gestion.FAMILLE_P.NB_TYPE(true);i++)
                  {
                      Telerik.WinControls.UI.RadToggleButton button = new Telerik.WinControls.UI.RadToggleButton();
                    ((System.ComponentModel.ISupportInitialize)(button )).BeginInit();
                    button.Name = "button"+i.ToString();
                    button.Location = new System.Drawing.Point(150+(i*120), 220);
                    Controls.Add(button);
    ..................................................
                  }

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Mais quand je fait l'appel à la méthode ToggleStateChanging je veut connaitre l' état des boutons , mais pour cette solution je ne connait pas quel est le bouton que j' appel "btn.ToggleState" (btn 1,2,ou3 ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      private void btn_ToggleStateChanging(object sender, Telerik.WinControls.UI.StateChangingEventArgs args)
            {
                if (btn.ToggleState == ToggleState.On)
                    btn.ToggleState = ToggleState.Off;
            }

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     private void btn_ToggleStateChanging(object sender, Telerik.WinControls.UI.StateChangingEventArgs args)
    {
         Telerik.WinControls.UI.RadToggleButton button = (Telerik.WinControls.UI.RadToggleButton) sender;
         if(button.Name.Equals("button1"))
             //action bouton1
         else if(button.Name.Equals("button2"))
             //action bouton2
     
    }

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Aeronia , merci bien
    est ce que tu peut m'aider
    comment je peut faire un test sur le bouton2 dans l'action du bouton1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
         if(button.Name.Equals("button1"))
             //action bouton1
     
    if (button2.ToggleState == ToggleState.On)//ce code est faut
                        button2.ToggleState = ToggleState.Off;

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Je ne comprends pas ce que tu veux faire

    Au cas où ça peut t'aider,

    Voici comment récupérer un control via son nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Button but = (Button)Controls["button2"];
    if(but != null)
    {
     
    }

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2008
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Aeronia , merci bien

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Points : 40
    Points
    40
    Par défaut
    Bonjour tout le monde,moi aussi j'ai un problème similaire à ça.Je m'explique: je crée dynamiquement des boutons je connais leur nombre qui correspond aux nombre de ligne d'une tabla de ma base de données.mais puisque je crée mes boutons dans une boucle for je ne sais pas comment différencier entre mes boutons pour gérer l'évènement Click.voila 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
     
    for (i=0;i<dgvListeFamille.Rows.Count;i++)
                {
     
                   Button btn = new Button();
                    EventHandler myHandler = new EventHandler(btn_Click);
                    btn.Click += myHandler;
                    btn.Parent = pnlBtnFamille;
                    btn.Location = new Point(6 + j, 5);
                    btn.Width = 76;
                    btn.Height = 55;
                    btn.ForeColor = Color.Black;
                    btn.Font = new Font(FontFamily.GenericSansSerif, 8.25F, FontStyle.Bold);
                    btn.Text = (string)dgvListeFamille.Rows[i].Cells[1].Value;
                    btn.Image = (Image) dgvListeFamille.Rows[i].Cells[2].Value;
                    btn.ImageAlign = ContentAlignment.TopLeft;
                    btn.TextAlign = ContentAlignment.BottomCenter;
                    btn.Size = new System.Drawing.Size(76, 55);
                    pnl_articles.Controls.Add(btn);
                    //i++;
                    j = j + 76;
                }
            }
    J'attend votre aide merci d'avance

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Bonjour,

    Ce que tu peux faire c'est donc donner un nom à tout tes boutons, qui permettrait donc de savoir quel bouton est récupérer dans ton événement click grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void ButtonClick(object sender, System.EventArgs e)
    {
                Button clickedButton = (Button)sender;
                if(clickedButton.Name.Equals("Button1"))
               {
                          //Action Button1
               }
    }
    Ou alors dans ton cas comme ton bouton semble lier à une DataGridViewRow, tu peux lors de la création de ton bouton, assigner ta DataGridViewRow à la propriété tag de ton bouton afin de connaitre plus tard la row qui est lié à ton bouton.

    Comme ceci :

    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
    for (i=0;i<dgvListeFamille.Rows.Count;i++)
                {
     
                    Button btn = new Button();
                    EventHandler myHandler = new EventHandler(btn_Click);
                    btn.Click += myHandler;
                    btn.Parent = pnlBtnFamille;
                    btn.Location = new Point(6 + j, 5);
                    btn.Width = 76;
                    btn.Height = 55;
                    btn.ForeColor = Color.Black;
                    btn.Font = new Font(FontFamily.GenericSansSerif, 8.25F, FontStyle.Bold);
                    btn.Text = (string)dgvListeFamille.Rows[i].Cells[1].Value;
                    btn.Image = (Image) dgvListeFamille.Rows[i].Cells[2].Value;
                    btn.ImageAlign = ContentAlignment.TopLeft;
                    btn.TextAlign = ContentAlignment.BottomCenter;
                    btn.Size = new System.Drawing.Size(76, 55);
                    btn.Tag = dgvListeFamille.Rows[i];
                    pnl_articles.Controls.Add(btn);
                    //i++;
                    j = j + 76;
                }
            }
    Et lors de l'event Click :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void ButtonClick(object sender, System.EventArgs e)
    {
                Button clickedButton = (Button)sender;
                if(clickedButton.Tag != null)
                {
                       DataGridViewRow row = (DataGridViewRow)clickedButton.Tag;
                       //traitement en fonction de la row
                }
     
     
    }
    Tu peux aussi vérifier que ton tag est bien de type DataGridViewRow .

  12. #12
    Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    82
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 82
    Points : 40
    Points
    40
    Par défaut
    Je te remercie vraiment pour l'intérêt que tu donne afin de résoudre mon problème.Mais je ne comprends pas l'intérêt de Tag.Bon je t'explique :j'ai une table famille et une autre article dans ma base de données et pour chaque famille correspond plusieurs article et un article appartient à une famille(relation 1-n).Mes boutons que je crée dynamiquement représentent les données de ma table famille,et quand je clique sur un bouton qui représente une famille je veux l'affichage de tous les articles appartenant à cette famille dans une datagridview.Comment faire car je trouve pas la solution?
    voila ce que j'ai réfléchi à faire mais il ne me donne pas le bon résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      void btn_Click(Object sender, System.EventArgs e)
     
     {
         Button btnClicked = (Button)sender;
        for(int i=0;i<dgvFamilles.Rows.Count;i++)
                { 
     
     
                string btntext = (string)dgvFamilles.Rows[i].Cells[1].Value;
                if (btnClicked.Text.Equals(btnText))
                { ar.AffichInfoArticle((int)dgvFamilles.Rows[i].Cells[0].Value, bindingSource4,dataGridView_article);
               }
    merci d'avance pour tout conseil

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/04/2009, 17h52
  2. [DOM]Créer dynamiquement du HTML à partir d'une chaîne
    Par jothi35 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/08/2006, 20h01
  3. Réponses: 10
    Dernier message: 08/08/2006, 10h24
  4. Réponses: 5
    Dernier message: 19/07/2006, 19h36
  5. [Réseau] plusieurs flux a partir d'une socket
    Par al85 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 27/01/2005, 18h11

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