Wie der Titel schon sagt, suche ich nach einer Möglichkeit, die Reihenfolge zu steuern, in der die Elemente oben in meinem Steuerelement andocken.
Ich habe mit dem Windows Form Designer gespielt und ich kann nicht finden, was das RightClick->Order->SendToFront
macht, denn genau das möchte ich tun . Wenn ich meine Inhalte zu meinem Steuerelement hinzufüge, befindet sich der neueste Inhalt immer oben, und ich möchte, dass der neuere Inhalt unten und der älteste Inhalt unten angezeigt wird oben.
Zusammenfassung: Gibt es in WinForms (C #) eine einfache Möglichkeit, die Reihenfolge zu steuern, in der Dinge an den Seiten der Steuerelemente andocken?
Bearbeiten: Ich muss dies anhand des dahinter stehenden Codes tun, wenn ich meine Steuerelemente hinzufüge. Ich kann keine Funktionen des WinForms-Designers verwenden, aber ich versuche, den WinForms-DesignerSendToBack
und dieSendToFront
Funktionen nachzuahmen
Antworten:
Verwenden Sie diese Methoden:
quelle
control.SendToFront()
See, das war jetzt einfach. Vielen Dank!Gehen Sie zu Ansicht → Andere Fenster → Dokumentumriss.
Ziehen Sie in diesem Fenster die Steuerelemente so, dass das Andocken so ist, wie Sie es möchten.
quelle
Wie Sie sagten, ist das neueste Steuerelement, das der Steuerelementauflistung hinzugefügt wurde, das oberste. Wenn Sie ein neueres Steuerelement benötigen, das unten hinzugefügt werden soll, empfehle ich, eine Liste von Steuerelementen zu erstellen, die Steuerelemente zur Liste hinzuzufügen, die Liste umzukehren und die Liste zur Steuerelementauflistung hinzuzufügen.
List<Control> controls = new List<Control(); controls.Add(new myFirstControl()); controls.Add(new mySecondControl()); controls.Reverse(); this.Controls.AddRange(controls.ToArray());
quelle
Ein Steuerelement verfügt über zwei Methoden, um das zu erreichen, wonach Sie suchen:
BringToFront
undSendToBack
.quelle
Die Reihenfolge, in der die Steuerelemente zur Controls-Sammlung hinzugefügt werden, bestimmt die Docking-Reihenfolge.
quelle
ControlCollection.SetChildIndex(control, index)
Methode.(Um eine andere Option anzuzeigen): In Visual Studio 2012 (und höher):
Dies gibt Ihnen die Möglichkeit, die Steuerelemente in die gewünschte Reihenfolge zu bringen.
quelle
Beachten Sie, dass es bei programmgesteuerter Ausführung einen sehr einfachen Weg gibt, dies zu erreichen, nämlich:
containerPanel.Controls.SetChildIndex(Element, 0); //sends element to the bottom of the list
quelle
Verwenden Sie das FlowLayoutPanel, es macht genau das, was Sie wollen.
quelle