Copier les controles d'une page vers une autre page d'un TabPage [Résolu]

Messages postés
38
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
2 septembre 2017
- - Dernière réponse : Whismeril
Messages postés
14046
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2019
- 29 août 2012 à 12:00
Bonjour,
J'ai un tabPage avec des controles (textBox, label, comboBox, richTextBox) et leurs méthodes associées sur la tabpage1, je veux copier par code tous ces controles sur tabpage2
Quand j'implémente:

        foreach (Control c in tabPage1.Controls)
            {
                Object c2 = c;
               tabPage2.Controls.Add((Control)c2); 
            }


Il me déplace la moitié environ des controles sur la tabpage2
,dénudant à moitié la tabpage1, au lieu de tous les copier. Pourquoi?
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
14046
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2019
324
3
Merci
Bonjour, j'ai tapé ça de tête alors désolé si ca ne focntionne pas...

Object c2 = c;

reviens à dire que c2 et c sont deux référence identiques.

Certains objets ont une propriété clone pour faire ce que tu veux (hors mis les méthodes attachées).
Est ce que tu associes dynamiquement les méthodes aux controles du tabpage1 ou les associes tu au dévelopement?
Dans le premier cas je mettrais la liste des méthodes séparé par de virgules par exemple dans la propriété Tag du controle pour pouvoir les reutiliser, dans le second cas je preparerais tous les controles sur tabpage2 et les rendrais visibles quand j'en ai besoin.

Whismeril

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Whismeril
Messages postés
14046
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2019
324
0
Merci
Bonjour,

pour le fait que ça n'agissent que sur la moitié des controle je ne sais pas
Par contre que cela te les déplacent cela me semble logique.
Object c2 = c;// cette ligne veut dire c2 est c. Si tu ajoutes c2 dans tabpage2 à mon sens il ne peux plus être dans tabpage1



Pour faire une copie des contrôles et méthodes (et contenu?) je pense qu'il faut que tu fasses un truc dans le style.

foreach (Control c in tabPage1.Controls)
            {
               
               if (Type == TextBox)
               {
                    TextBox c2 = new TextBox();
                    c2.Text = c.Text;

                    tabPage2.Controls.Add((Control)c2); 
               }

              //etc, pour les méthodes je ne sais pas trop
            }


Whismeril
Commenter la réponse de Whismeril
Messages postés
38
Date d'inscription
mardi 20 mai 2008
Statut
Membre
Dernière intervention
2 septembre 2017
1
0
Merci
Il me semblait que
Object c2 = c;
signifiait non pas que c=c2 mais que c2 est une réference sur une copie de c...
D'autre part je ne veux pas que les controles contiennent le même texte sur les deux tabpages ( car alors pourquoi créer deux tabpages?) , je désirais avoir les mêmes controles avec des contenus différents.
Enfin le compilateur affiche un message d'erreur au sujet du code
if (Type == TextBox)
Commenter la réponse de mecyber25