web-dev-qa-db-fra.com

Comment contrôler l'ordre d'ancrage dans WinForms

Comme le titre l'indique, je cherche un moyen de contrôler l'ordre dans lequel les éléments s'arrêtent en haut de mon contrôle.

J'ai joué avec le concepteur de formulaires Windows, et je n'arrive pas à trouver ce que le RightClick->Order->SendToFront fait, parce que c'est exactement ce que je veux arriver. Dans la mesure du possible, lorsque j'ajoute mon contenu à mon contrôle, le contenu le plus récent est toujours en haut, et j'aimerais que le contenu le plus récent soit en bas et que le contenu le plus ancien soit en haut. Haut.

Résumé: Existe-t-il un moyen facile dans WinForms (C #), de contrôler l'ordre dans lequel les choses s'arrêtent sur les côtés des contrôles?

Edit: Je dois le faire à partir du code derrière lorsque j'ajoute mes contrôles, je ne peux pas utiliser les fonctionnalités de le concepteur de WinForm, mais ce que j'essaie de faire, est d'imiter les fonctionnalités de WinForms Designer SendToBack et SendToFront

67
caesay

Utilisez ces méthodes:

myControl.SendToBack();
myControl.BringToFront();
68
serhio

Allez dans Affichage → Autres fenêtres → contour du document.

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

130
Stormenet

Comme vous l'avez dit, le dernier contrôle ajouté à la collection de contrôles est celui du dessus. Si vous avez besoin d'ajouter un nouveau contrôle 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());
11
Alexandre Pepin

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

4
Oliver Hanappi

Un contrôle a deux méthodes pour atteindre ce que vous recherchez: BringToFront et SendToBack.

4
Gerrie Schenck

(Par souci d'afficher une autre option): Dans Visual Studio 2012 (et versions ultérieures):

  1. Sélectionnez le contrôle que vous souhaitez déplacer vers l'avant (ou vers l'arrière);
  2. Cliquez sur les boutons marqués ci-dessous (Mettre en avant/Envoyer en arrière); enter image description here

Cela vous donnera la possibilité de réorganiser les commandes selon l'ordre de votre choix.

2
Arthur Zennig

Notez que lorsque vous effectuez cette programmation, il existe un moyen très simple d'y parvenir, à savoir:

containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list
0
Jack