Copier tabpage ?

cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 3 avril 2008 à 21:53
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009 - 4 avril 2008 à 18:48
Bonjour, je travaille sur un projet contenant des tabpages et je dois via un menu contextuel permettre l'ouverture d'une nouvelle tabpage identique à la premiere et dont les controls fonctionneraient également. Est-ce possible ?

Codialement,
Anz

6 réponses

oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
4 avril 2008 à 13:51
C'est possible mais pas en tout fait je ne pense pas, il faut que tu crées ta fonction de copie de tabPage. Qui va dupliquer chaque Controls du tabPage sans oublier les événments. Si tu as que des contrôles simples genre label, textebox, boutons, c'est pas très dur, mais si tu commences à avoir des datagridview, d'autres TabPages, ca va commencer à devenir un peu plus long.
Bon courage ;)
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
4 avril 2008 à 14:16
Salut, c'est possible via  System.Reflection de faire un clone complet d'un contrôle, mais je pense que dans ton cas tu peux faire quelque chose de plus simple comme ce que propose Oximoron. Suffit de créer un nouveau TabPage dynamiquement avec le même nombre de contrôles et du même type, puis de recopier seulement quelque propriétés.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
4 avril 2008 à 15:21
Merci à vous, en effet j'utilise des controls du style datagrid view dans lesquels je charge des fichiers xml plutot lourd manuellement (sans passer par dataset).
Si je regénère dynamiquement la mm tabpage ainsi que les contrôles je vais avoir besoin d'indicer toutes les variables utilisées puisuqe je veux pouvoir répliquer la page plus d'une fois (une 10aine minimum) et utiliser chaque datagrid indépendamment les unes des autres.. :s

Mais je pense que je vais attendre un peu avant de me lancer là dedans, j'ai dejà du mal à gérer la création de tabpage:
avec la fonction suivante chaque fois que j'ajoute une tab j'en créé le deux fois le nombre de tab page créé précdemment:

void Addtabpage_Click(object sender, EventArgs e)
        {
            tp2.Text = "New page";
            tp2.Parent = tabControl1;
            tp2.BackColor = System.Drawing.Color.LightBlue;
            tabControl1.TabPages.Add(tp2);
        }

Pour résoudre le problème j'ai du faire ceci:

void Addtabpage_Click(object sender, EventArgs e)

        {
            tp2.Text = "New page";
            tp2.Parent = tabControl1;
            tp2.BackColor = System.Drawing.Color.LightBlue;
            tabControl1.TabPages.Remove(tp2);
            tabControl1.TabPages.Add(tp2);
           }

J'ai l'impression que c'est loin d'être otpimal :s

Cordialement,
Anz
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
4 avril 2008 à 18:27
Hello,

Peut etre une solution ici:
http://bytes.com/forum/thread733070.html

<hr />
-My Blog-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
4 avril 2008 à 18:34
Merci à toi, il semblerait que je doive me tourner vers la methode clone(), mais je doit avouer que je n'ai encore jamais testé. Je vais regarder ça de plus pres.

Merci à vous.

Anz.
0
oximoron Messages postés 149 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 30 janvier 2009
4 avril 2008 à 18:48
Le .clone() surtout pour les évenments qui ne sont peut être pas clonés... je ne sais pas trop comment ca marche, moi je te conseille de faire ta classe de copie de contrôle l'avantage c'est que ca peut toujours servir, et tu pourras l'enrichir petit à petit.
0