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
Utilisez ces méthodes:
myControl.SendToBack();
myControl.BringToFront();
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.
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());
L'ordre dans lequel les contrôles sont ajoutés à la collection Controls détermine l'ordre d'ancrage.
Un contrôle a deux méthodes pour atteindre ce que vous recherchez: BringToFront
et SendToBack
.
(Par souci d'afficher une autre option): Dans Visual Studio 2012 (et versions ultérieures):
Cela vous donnera la possibilité de réorganiser les commandes selon l'ordre de votre choix.
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