91 votes

Comment contrôler l'ordre d'accrochage dans WinForms ?

Je cherche un moyen de contrôler l'ordre dans lequel les éléments s'affichent en haut de mon contrôle.

J'ai remarqué qu'au fur et à mesure que j'ajoute des enfants à mon contrôle (dans le concepteur ou dans le code), l'enfant le plus récent se trouve toujours en haut. J'aimerais que les enfants les plus récents soient en bas et que les plus anciens soient en haut.

Existe-t-il un moyen de faire cela par le biais du code ? Dans le concepteur WinForms, RightClick->Order->BringToFront / SendToBack fait quelque chose de similaire à ce que je veux faire, mais comment le faire de manière programmatique ?

0 votes

Merci ; j'avais besoin de contrôler l'amarrage de façon programmatique et je n'avais pas réalisé que leur ordre contrôlait la façon dont ils s'amarraient.

162voto

Stormenet Points 8695

Cliquez sur Afficher le contour du document Autres Windows.

Dans cette fenêtre, faites glisser les commandes pour que l'ancrage soit tel que vous le souhaitez.

0 votes

Je me demandais quels mots je pourrais utiliser pour décrire cette fenêtre exacte, j'ai fini par y arriver sur Google, Merci !

12 votes

Je pense que cela devrait être la réponse

1 votes

Cela ne fonctionne pas si les contrôles sont ajoutés dynamiquement.

81voto

serhio Points 9649

Utilisez ces méthodes :

myControl.SendToBack();
myControl.BringToFront();

2 votes

Je cherchais control.SendToFront() Tu vois, maintenant c'était facile. Merci !

11 votes

@Tommy : Vous programmez généralement derrière votre ordinateur ? :)

7 votes

Sur la fenêtre de conception, faites un clic droit. Sélectionnez sendToBack et faites à nouveau un clic droit : BringToFont

13voto

Alexandre Pepin Points 975

Comme vous l'avez dit, le contrôle le plus récent ajouté à la collection de contrôles est celui du haut. Si vous avez besoin qu'un contrôle plus récent soit ajouté en bas, je vous suggère de créer une liste de contrôles, d'ajouter les contrôles à la liste, d'inverser la liste et d'ajouter la liste à la collection de contrôles.

List<Control> controls = new List<Control();
controls.Add(new myFirstControl());
controls.Add(new mySecondControl());
controls.Reverse();
this.Controls.AddRange(controls.ToArray());

6voto

Gerrie Schenck Points 13421

Une commande dispose de deux méthodes pour obtenir ce que vous recherchez : BringToFront y SendToBack .

4voto

Oliver Hanappi Points 5141

L'ordre dans lequel les contrôles sont ajoutés à la collection Controls détermine l'ordre d'ancrage.

0 votes

Je dois modifier l'ordre d'accrochage après que les contrôles aient été ajoutés à la collection.

3 votes

Alors, allez-y pour le ControlCollection.SetChildIndex(control, index) méthode.

0 votes

@Oliver Hanappi : Est-il possible de faire cela dans le designer ? Sans code ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X