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#] Création dynamique d'objets


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    16
    Points
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 11
    Par défaut [C#] Création dynamique d'objets
    Bonjour,

    Je lis un fichier XML et je tente de créer des radiobutton
    en dynamique par rapport au contenu de mon XML.

    Mon problème est de nommer dynamiquement mes objets radiobutton.

    Voila ce que j'aimerais faire et que je n'arrive pas à faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Int Cpt = 0;
    Foreach (XmlNode Element in ListeNoeuds);
           {
           Cpt++;
           RadioButton RadioB(Cpt) = New RadioButton();
           This.Controls.Add(RadioB(Cpt);
           }
    ListeNoeuds a été obtenu par une requête Xpath.

    Mon problème se situe sur RadioB(Cpt).
    J'ai volontairement mis (Cpt) pour illustrer ma question
    car je ne sais pas quelle est la méthode à adopter ou la
    syntaxe à mettre en place.

    Merci par avance pour votre aide.
    (débutant passioné)

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Points
    776
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Foreach (XmlNode Element in ListeNoeuds);
           {
           This.Controls.Add(New RadioButton());
           }

  3. #3
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Points
    6 017
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Par défaut
    Citation Envoyé par efficks
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Foreach (XmlNode Element in ListeNoeuds);
           {
           This.Controls.Add(New RadioButton());
           }

    le pb de ta solution est que l'on ne peut pas travailler avec les radiobutton après.

    Le mieux reste de faire une collection :

    en 2.0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    List<RadioButton> radios = new List<RadioButton>();
    RadioButton r;
    foreach (XmlNode Element in ListeNoeuds);
    {
      r = New RadioButton();
      radios.Add(r);
      This.Controls.Add(r);
    }
    ensuite il suffit d'utiliser les items de la collection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for(int i = 0; i < radios.Count; i ++)
    {
       radios[i].Enable = false;
    }

  4. #4
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    16
    Points
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 11
    Par défaut [C#] Création dynamique d'objets
    Bonjour,

    Je vais mettre en application vos réponses.

    Merci encore et bonne journée.
    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    16
    Points
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 11
    Par défaut [C#] Création dynamique d'objets
    Bonjour,

    J'ai mis mes objets en collection comme vous me l'avez spécifié. Cela
    marche du feu de dieu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    List<RadioButton> radios = new List<RadioButton>();
    RadioButton r;
    foreach (XmlNode Element in ListeNoeuds);
    {
      r = New RadioButton();
      radios.Add(r);
      This.Controls.Add(r);
    }
    J'ai fait la même opération pour gérer des panels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    List<Panel> MonPanel = new List<Panel>();
    Panel r;
    foreach (XmlNode Element in ListeNoeuds);
    {
      r = New Panel();
      MonPanel.Add(r);
      This.Controls.Add(r);
    }
    Cela marche pour la construction par contre j'ai maintenant un problème bloquant.
    Je ne sais pas comment appeler mes objets depuis une autre fonction car le nom de ma collection n'est pas connu dans cette fonction.
    Le code ci dessous ne marche donc pas, alors que la collection MonPanel a
    bien été créée auparavent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonPanel[i].Visible = false;
    Merci par avance pour votre aide.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Points
    343
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Par défaut
    Bonjour,
    Déclare la liste en private dans ta classe et non dans ta fonction afin de pouvoir y acceder à partir de ta classe
    c'est aussi simple que ça

    EDIT: je te met un bout de code au cas ou tu es débutant:
    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
    public partial class Form1 : Form
    {
            private List<RadioButton> radios; // declaration membre a al classe
            public Form1()
            {
                InitializeComponent();
                radios = new  List<RadioButton>(); // initialisation de la liste
            }
    
            private void MaFonctionDynamique()
            {
                RadioButton r;
                foreach (XmlNode Element in ListeNoeuds);
                {
                  r = New RadioButton();
                  radios.Add(r);
                  This.Controls.Add(r);
                }
            }
    
            private void MaDeuxiemeFonction()
            {
                radios[1].Visible = false; // acces au radiosboutton dans une autre fonction sans donner de paramètres
            }
    }

  7. #7
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Points
    6 017
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Par défaut
    Citation Envoyé par ekinox17
    Bonjour,
    Déclare la liste en private dans ta classe et non dans ta fonction afin de pouvoir y acceder à partir de ta classe
    tout a été dit

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    16
    Points
    11
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 16
    Points : 11
    Par défaut Par défaut [C#] Création dynamique d'objets
    Bonsoir,

    Comme vous l'aviez remarqué je suis un débutant (mais je m'accroche).
    Votre aide m'a été tres utile. Je vous en remercie.

    A+

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

Discussions similaires

  1. [GLScene] Création dynamique d'objet
    Par Matt2094 dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2010, 14h28
  2. Création dynamique d'objets
    Par Ensias dans le forum Langage
    Réponses: 4
    Dernier message: 01/03/2007, 22h48
  3. Création dynamique d'objets ?
    Par Arthur A. dans le forum C++
    Réponses: 6
    Dernier message: 16/06/2005, 00h55
  4. création dynamique d'objet, projet win32
    Par noinneh dans le forum MFC
    Réponses: 5
    Dernier message: 03/02/2005, 17h07
  5. [Reflexivite]création dynamique d'objet et Héritage
    Par norkius dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 26/10/2004, 12h37

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