2010-04-22 5 views
0

J'ai un codeModifier les grandes lignes du document dynamique

void SomeButton_Click(object sender, EventArgs e) 
    { 
      if (this.Controls.Contains(Panel2)) 
      { 
       this.Controls.Remove(Panel2); 
      } 
      else 
      { 
       this.Controls.Add(Panel2); 
      } 
    } 

Mon problème est le suivant: la modification du code de l'ordre du document les grandes lignes des contrôles sur ma forme. Comment puis-je restaurer le contour du document précédent? Quelles propriétés, méthodes dois-je utiliser? Ou est-ce impossible?

+0

Quel plan de document? S'il vous plaît fournir plus de détails. –

+0

@Hanin, Ctrl + Alt + T, dans mon Visual Studio 2005: Vue-> Autres fenêtres-> Document Outline –

Répondre

0

utilisation Controls.SetChildIndex (enfant de contrôle, int newIndex) après avoir ajouté le contrôle pour le positionner à l'endroit que vous voulez qu'il soit. Ce ne fonctionne que si vous connaissez l'emplacement exact dans la liste de contrôle est Supposons que vous soyez dans.

En guise d'alternative, avez-vous pensé à ajouter tous les panneaux, puis à définir Visible = false jusqu'à ce que vous deviez les afficher. Cela ne fonctionne bien sûr que si les panneaux sont tous prédéfinis. Si vous les créez dynamiquement, cela ne fonctionnera pas.

+0

Dans certains cas, je crée dynamiquement un contrôle ... Solution avec visible La propriété n'est pas ce que je demande mais c'est approprié dans certains cas. J'ai marqué votre réponse comme utile. –

0

Recherchez l'index avant de supprimer et de l'ajouter, utilisez Insert avec cet index. Vous devez y accéder via le explicit IList interface implementation.

private int panelIndex = 0; 

void SomeButton_Click(object sender, EventArgs e) 
{ 
    if (this.Controls.Contains(Panel2)) 
    { 
     panelIndex = this.Controls.IndexOf(Panel2); 
     this.Controls.Remove(Panel2); 
    } 
    else 
    { 
     IList ctrlsAsList = (IList)this.Controls; 
     ctrlsAsList.Insert(panelIndex, Panel2); 
    } 
} 
+0

@Oded, je ne trouve pas la méthode Insert de this.Controls ... –

+0

@alex - Il est exposé via ' IList'. – Oded

+0

Je reçois NonSupportedException: int _index = 0; SomeButton_Click void (object sender, EventArgs e) { if (this.Controls.Contains (Panel2)) { _index = this.Controls.IndexOf (Panel2); this.Controls.Remove (Panel2); } sinon { ((IList) this.Controls) .Insert (_index, Panel2); } } –

Questions connexes