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 :

Accessibilité de controls créés dynamiquement.


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut Accessibilité de controls créés dynamiquement.
    Yop.

    Voilà mon souci, lors du clic sur un bouton de mon form, je créais dynamiquement un nouveau form qui contient plusieurs controls également créés dynamiquement.
    Parmi ces controls, il y a des TextBox dont je vais voir besoin de récupérer leur valeur (.text) mais dans un autre événement que mon button1_click.
    Ca sera plus parlant si je mets un bout de 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
    private void bt_add_notice_Click(object sender, EventArgs e)
    {
       // Création d'un nouveau Form.
       Form fAddNotice = new Form();
       fAddNotice.Text = "Ajouter une notice.";
       fAddNotice.Size = new Size(700, 200);
     
       // Bouton fermer.
       Button bt_fermer_fAddNotice = new Button();
       bt_fermer_fAddNotice.Text = "Fermer";
       bt_fermer_fAddNotice.Size = new Size(75, 25);
       bt_fermer_fAddNotice.Location = new Point(360, 100);
       bt_fermer_fAddNotice.Click += new EventHandler(bt_fermer_fAddNotice_Click);
     
       fAddNotice.Controls.Add(bt_fermer_fAddNotice);
       fAddNotice.ShowDialog();
    }
     
    void bt_fermer_fAddNotice_Click(object sender, EventArgs e)
    {
       // Ici je veux fermer fAddNotice, mais comme il a été créé dans un autre événement je ne peux pas y accéder...
    }
    Donc du coup je créais tous mes controls avant le bt_add_notice_Click mais je voudrais savoir s'il n'y a pas un autre moyen de procéder ?

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    utilise des usercontrols tu gagneras du temps !!!

  3. #3
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Je vois pas ce que ça change...

    Pis j'ai rien compris à comment les créer ces trucs lol

    Mais si tu me dis ça c'est que ça doit être compliqué à faire (ce que je voulais ^^)...

    Tant pis j'vais déclarer mes controls avant le click... C'est reloud mais pas le choix.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    créer des controles à la volée est utile quand leur contenu/fonction ne peut etre déterminé qu'à la volée, et encore

    sinon autant passer par visual studio pour les poser
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    si j'ai bien compris, lors d'un click sur un bouton bA d'un form A, tu ouvre dynamiquement un form B avec un bouton bB pour fermer B ????

    si c'est bien ca , tu crée un usercontrol avec tous tes composants nécessaires dont le fameux bouton pour fermer

    ainsi c'est plus propre ! ton user control apparait au-dessus de ta liste de ta boite a outils et tu peux le claquer ou tu veux ....

  6. #6
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    J'ai pas qu'un bouton dans le formB, j'ai plusieurs Labels et plusieurs TextBox.

    J'ai raccourci mon code pour vous montrer un exemple c'est tout.

    En fait j'ai voulu faire tout ça graphiquement pour éviter que mon projet n'ait trop de form directement implanté dedans (parce que je vais avoir plusieurs form dans le genre), mais tant pis j'vais faire comme ça, ça sera plus simple (et moins lourd peut-être ?).

    Merci pour vos conseils.

    Ps : koyot3, j'y comprends rien à comment créer des UserControls et j'ai plus le temps d'en faire lol Merci quand même ^^

  7. #7
    Membre très actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Par défaut
    Là juste pour que vous rigoliez un peu, voici ce que ça donne avec tout qui est créé dynamiquement
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
            // Création d'un nouveau Form.
            private Form fAddNotice = new Form();
            // Création de nouveaux controls.
            private Label lb_nom_notice = new Label();
            private TextBox tb_nom_notice = new TextBox();
            private Label lb_nom_realisateur = new Label();
            private TextBox tb_nom_realisateur = new TextBox();
            private Label lb_date = new Label();
            private DateTimePicker dtp_notice = new DateTimePicker();
            private Label lb_ref_notice = new Label();
            private TextBox tb_ref_notice = new TextBox();
            private Label lb_ver_notice = new Label();
            private TextBox tb_ver_notice = new TextBox();
            private Button bt_valider_new_fiche = new Button();
            private Button bt_fermer_fAddNotice = new Button();
            private void bt_add_notice_Click(object sender, EventArgs e)
            {
                fAddNotice.Text = "Ajouter une notice.";
                fAddNotice.Size = new Size(700, 200);
     
                // Nom de la notice.
                lb_nom_notice.Text = "Nom de la notice";
                lb_nom_notice.Size = new Size(100, 15);
                lb_nom_notice.Location = new Point(15, 10);
                tb_nom_notice.Location = new Point(10, 35);
                tb_nom_notice.Size = new Size(113, 20);
     
                // Nom du réalisateur de la notice.
                lb_nom_realisateur.Text = "Réalisateur de la notice";
                lb_nom_realisateur.Size = new Size(120, 15);
                lb_nom_realisateur.Location = new Point(155, 10);
                tb_nom_realisateur.Size = new Size(113, 20);
                tb_nom_realisateur.Location = new Point(159, 35);
     
                // Date de réalisation de la notice.
                lb_date.Text = "Date de la notice";
                lb_date.Size = new Size(100, 15);
                lb_date.Location = new Point(310, 10);
                dtp_notice.Size = new Size(100, 20);
                dtp_notice.Format = DateTimePickerFormat.Short;
                dtp_notice.Location = new Point(305, 35);
     
                // Référence de la notice.
                lb_ref_notice.Text = "Référence de la notice";
                lb_ref_notice.Size = new Size(120, 15);
                lb_ref_notice.Location = new Point(430, 10);
                tb_ref_notice.Size = new Size(113, 20);
                tb_ref_notice.Location = new Point(430, 35);
     
                // Version de la notice.
                lb_ver_notice.Text = "Version de la notice";
                lb_ver_notice.Size = new Size(120, 15);
                lb_ver_notice.Location = new Point(570, 10);
                tb_ver_notice.Size = new Size(113, 20);
                tb_ver_notice.Location = new Point(570, 35);
     
                // Bouton valider.
                bt_valider_new_fiche.Text = "Ajouter";
                bt_valider_new_fiche.Size = new Size(75, 25);
                bt_valider_new_fiche.Location = new Point(275, 100);
                bt_valider_new_fiche.Click += new EventHandler(bt_valider_new_fiche_Click);
     
                // Bouton fermer.
                bt_fermer_fAddNotice.Text = "Fermer";
                bt_fermer_fAddNotice.Size = new Size(75, 25);
                bt_fermer_fAddNotice.Location = new Point(360, 100);
                bt_fermer_fAddNotice.Click += new EventHandler(bt_fermer_fAddNotice_Click);
     
                // Ajout des controls au Form.
                fAddNotice.Controls.Add(lb_nom_notice);
                fAddNotice.Controls.Add(tb_nom_notice);
                fAddNotice.Controls.Add(lb_nom_realisateur);
                fAddNotice.Controls.Add(tb_nom_realisateur);
                fAddNotice.Controls.Add(lb_date);
                fAddNotice.Controls.Add(dtp_notice);
                fAddNotice.Controls.Add(lb_ref_notice);
                fAddNotice.Controls.Add(tb_ref_notice);
                fAddNotice.Controls.Add(lb_ver_notice);
                fAddNotice.Controls.Add(tb_ver_notice);
                fAddNotice.Controls.Add(bt_valider_new_fiche);
                fAddNotice.Controls.Add(bt_fermer_fAddNotice);
     
                // Ouverture du Form.
                fAddNotice.ShowDialog();
            }
    Donc voilà faire ça plusieurs fois ça risque d 'être lourd...

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/10/2010, 11h43
  2. Réponses: 2
    Dernier message: 03/12/2007, 10h28
  3. Problème de visualisation de controle créés dynamiquement
    Par lordashram dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/05/2007, 13h28
  4. drag sur controls créés dynamiquement
    Par ptisinge dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 13/10/2006, 13h04
  5. Réponses: 9
    Dernier message: 28/10/2005, 13h48

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