2017-02-17 2 views
1

Je suis un contrôle basé ajoutais sur une conditionAjouter un contrôle avant un autre contrôle

if(x = true) 
    dv1.Controls.Add(lnkTest); 
else 
    dv2.Controls.Add(lnkTest); 

Comme j'ajoute de nombreux contrôles ainsi pour des raisons de lisibilité, je vérifiais cette condition après avoir ajouté toutes les autres commandes. Mais il va ajouter le contrôle lnkTest après tous les contrôles comme il est appelé après eux. Je n'ai aucun problème à déplacer ce code vers l'emplacement correct où je veux mais cela compromettra un peu la lisibilité. Je me demandais juste s'il n'y a aucun moyen d'ajouter lnkTest avant tout contrôle?

Répondre

1

La méthode AddAt vous permet de spécifier l'index de localisation auquel vous souhaitez insérer le contrôle. Utilisez l'index 0 pour le début:

dv1.Controls.AddAt(0, lnkTest); 

A noter toutefois que cette insérera lnkTest avant que les enfants, y compris ceux que vous ne vous êtes pas inséré. Donc, vous devriez peut-être, rappelez-vous l'endroit où l'insert doit se produire:

int start = dv1.Controls.Count(); 
// insert all other controls 
dv1.Controls.AddAt(start, lnkTest); 

Et rappelez-vous que vous devez faire pour les dv1 et dv2. À ce stade, je dirais que votre if ne fera probablement pas de mal à la lisibilité plus que cette mémorisation.

1

Il suffit d'utiliser la méthode AddAt comme ceci:

dv1.Controls.AddAt(0, lnkTest); 

Référence: ControlCollection.AddAt Method

Ajoute l'objet de contrôle spécifié à la collection à l'emplacement d'index spécifié.