2010-08-09 3 views
9

mit einem Anker andocken ich die folgende Zeile schreiben:Wie oben und links

myControl.Anchor = (AnchorStyles.Top | AnchorStyles.Left); 

Und es wird myControl nach links und oben verankern.

Warum kann ich folgendes tun:

myControl.Dock = (DockStyle.Top | DockStyle.Left); 

ich die obige Zeile schreiben kann, aber alle es tut gesetzt wird, um die DockStyle nach links.

Irgendwelche Gedanken/Gründe dafür?

+0

Ich denke, Sie haben gerade nicht vollständig verstanden, wie Sie das gewünschte Layout erhalten, indem Sie Dock, Anker und eine Art Container-Steuerelement (wie TableLayoutPanel) verwenden. Mit diesen Elementen können Sie jede Art von Layout erstellen, das sich an die Größe Ihrer Form/Steuerung anpasst. Wenn Sie also mehr Informationen darüber geben, was Sie in Ihrem Layout erreichen möchten, können wir sicher eine Lösung finden. – Oliver

Antwort

11

Der Grund, warum Sie dies nicht tun können, ist, weil das Setzen einer DockStyle im Grunde dockt/füllt die Entirität der angegebenen Kante.

Zum Beispiel bedeutet DockStyle.Left, dass die Höhe des Elements angekoppelt ist, wird die Höhe des Behälters und der der X immer sein wird, wird Y Lage immer 0, 0 sein

DockStyle.Top bedeutet, dass die Breite der item wird immer die Breite des Containers sein und der Ort wird immer 0,0 sein.

Einstellung DockStyle.Top und DockStyle.Left würde im Wesentlichen geben Sie DockStyle.Fill. I.e. die gleiche Breite und Höhe wie der Container.

+0

Danke Gtt, das erklärt was ich sehe. Ich muss vielleicht eine andere Frage darüber stellen, was ich zu erreichen versuche, sobald ich herausgefunden habe, wie ich es ausdrücken soll! – AidanO

+0

Kein Problem. Ich habe den ganzen Schmerz überlebt, mich anzudocken und zu verankern, also werde ich die nächste Frage im Auge behalten. – GenericTypeTea

1

Der DockStyle kann nur auf einen Wert eingestellt werden, im Gegensatz zu Anchor, der auf viele Werte gesetzt werden kann.

Deshalb gibt es die Anchor -Eigenschaft, so dass Sie anpassen können, wie das Steuerelement reagiert auf die Form der Größenänderung genauer.

+0

Das ist richtig, aber was ist der Grund für diese Einschränkung des Docking und gibt es einen Weg um es herum? – AidanO

+0

Ich kenne keinen bestimmten Grund, warum ich denke, das Dock ist nur für einfaches, einfaches Andocken von Steuerelementen und würde nicht arbeiten mit Vielfachen (Sie könnten nicht eine Dock-Stil füllen und keine zum Beispiel), so dass es das ist Verankere auch. – w69rdy

3

Ein Dock ist ein vordefinierter Ankersatz, während Anchor eine benutzerdefinierte Dock-Konfiguration ist.

DockStyle.Top ist das gleiche wie Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right) mit der Ausnahme, dass ein Anker in jeder Ausgangsposition sitzen kann und ein Dock sich an die entfernte Kante bewegt.

+0

Sie sind ein bisschen ähnlich, aber sie sind nicht das Gleiche. Mit der Verankerung können Sie Positionen von den Kanten des Containers entfernen. Andocken erzwingt das angedockte Steuerelement an die angegebene Kante. I.e. Left = 0. Top = 0. – GenericTypeTea

+0

@GenericTypeTea Ich habe das in meiner Antwort – Codesleuth

+0

gesagt, also hast du. Ich entschuldige mich, ich habe es offenbar nicht richtig gelesen. – GenericTypeTea