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 :

Ajouter des controle dans un panel depuis une autre Form


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut Ajouter des controle dans un panel depuis une autre Form
    Bonjour,
    J'aimerais faire un truc un peu bizarre mais qui me serait bien utile :

    "Déplacer" tous les contrôles d'une form dans un panel en gardant leurs propriétés"

    Alors mon problème : J'y arrive sans trop de problème en faisant ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    FormToGet formToGet = new FormToGet();
    Panel panel = new Panel();
     
    foreach (Control control in formToGet.Controls()) {
        panel.Controls.Add(control);
    }
    Mais il se passe un truc bizarre lorsque je fais ceci, certain contrôles ne s'ajoute pas...

    Par exemple si je met une combobox seulement il va s'afficher avec ses propriétés (la collection qui représente la liste par exemple) mais si je rajoute un DataGridView... et bien le combobox disparait.. par contre le DataGridView s'affiche tout a fais correctement)

    Si j'enlève la ligne panel.Controls.Add(control); je sais que mon foreach traverse bien la totalité des contrôles mais dès que je met cette ligne il n'en parcoure plus la totalité.

    En plus ca ne m'envoie aucune Exception (un try catch tout autour ou dedans ne remonte rien du tout)

    Alors si qqun à une petite idée pour m'aider.... merci d'avance...

    A+

    Angle

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 43
    Points : 29
    Points
    29
    Par défaut
    Bon ben je me répond tout seul :

    Lorsque je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    panel.Controls.Add(control);
    Cela retire de la Collection de contrôle de la form le contrôle lui même du coup la Collection change et donc il ne peut plus la traverser normalement...

    donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    List<Control> lstControls = new List<Control>();
    	foreach (Control control in preferencePage.GetControls()) {
    		lstControls.Add(control);
    	}
    	foreach (Control control in lstControls) {
    		panel.Controls.Add(control);
    	}
    Comme ca je garde une liste compète tout le long....

    Erreur à la con, j'avais complétement oublié que lorsqu'on traverse une liste chainée avec des accès aléatoire on ne peux pas retirer des éléments....

    Enfin bref merci encore....

    Angle

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

Discussions similaires

  1. [Débutant] ajouter un controle dans un panel contenu dans une autre fenêtre
    Par veens777 dans le forum VB.NET
    Réponses: 4
    Dernier message: 24/08/2012, 18h01
  2. [Lazarus] Afficher une form dans le panel d'une autre form
    Par jojo86 dans le forum Lazarus
    Réponses: 2
    Dernier message: 22/05/2012, 00h02
  3. Réponses: 3
    Dernier message: 15/04/2012, 10h17
  4. [C# 2.0][Ajouter des Controls dans un panel
    Par the big ben 5 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/11/2006, 09h07
  5. ajouter des control dans une onglet de sstab sous VB6
    Par aymane_farissi dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 26/09/2005, 13h44

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