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

mecyber25 38 Messages postés mardi 20 mai 2008Date d'inscription 2 septembre 2017 Dernière intervention - 27 août 2012 à 21:42 - Dernière réponse : Whismeril 11406 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention
- 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

Répondre au sujet
Whismeril 11406 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 29 août 2012 à 12:00
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Whismeril
Whismeril 11406 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 28 août 2012 à 22:46
0
Utile
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
mecyber25 38 Messages postés mardi 20 mai 2008Date d'inscription 2 septembre 2017 Dernière intervention - 29 août 2012 à 08:54
0
Utile
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.