2015-11-15 1 views
0

Pourquoi est-ce code ne fonctionne pas correctement:copie incorrecte des contrôles C#

class CTabPage : TabPage 

CTabPage tp = new CTabPage(); 

for (int i=0; i < TabControl.TabPages[0].Controls.Count; i++) 
    tp.Controls.Add(TabControlTabControl.TabPages[0].Controls[i]); 

où TabControl est un TabControl existant.

problème est qu'il n'y a copié que la moitié des contrôles puisque TabControl.TabPages[0].Controls.Count est décrémenté dans la boucle.

Répondre

0

Un contrôle ne peut avoir qu'un seul parent.

Par « ajoutant » contrôles à la nouvelle collection TabPage.Controls, vous les retirer de l'ancien, ce qui provoque la valeur de Count à décrémenté que vous itérer à travers la boucle for.

Pour contourner le problème que vous rencontrez, vous pouvez itérer en arrière:

for (int i=TabControl.TabPages[0].Controls.Count-1; i==0; i--) 
    tp.Controls.Add(TabControlTabControl.TabPages[0].Controls[i]);