Andocken und Verankerung auf einem Windows-Form-Anwendung
Entwickle ich eine app für Windows Mobile 5.0 und oben, mit C# und .NET Compact Framework 2.0 SP2.
Ich habe eine WinForm mit zwei Platten innen (upperPanel und bottomPanel). Ich will, dass upperPanel immer füllen 2/3 der form, der Höhe, und bottomPanel füllt 1/3 der form - Höhe. Beide Platten füllen, die form komplett breit.
Ich habe diese verwendet:
upperPanel.Dock = Fill;
bottomPanel.Dock = Bottom;
Aber upperPanel füllt das Formular komplett aus.
Wie kann ich dies tun? Ich will, mehr o weniger, die gleiche gui auf verschiedenen Formfaktoren und auf Landschaft oder protrait - Modus.
Danke.
InformationsquelleAutor VansFannel | 2009-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tun müssen, ist, legen Sie die Bodenplatte auf den ersten, und legen Sie seine
Dock
EigenschaftBottom
. Dann legen Sie das panel in der Höhe zu 1/3 der form - Höhe. Schließlich, fügen Sie eine zweite Platte und legen Sie seineDock
EigenschaftFill
. Der Schlüssel hier ist, dass Sie wollen, um das Steuerelement hinzufügen, füllen Sie die restliche Fläche zu zuletzt Hinzugefügt werden. Alternativ, Sie können spielen, um mit die Bringen nach Vorne und nach Hinten-Befehle in Visual Studio, um die designer zu kooperieren.Können Sie auch brauchen, um Haken der
OnSizeChanged
- Ereignis für das Formular und re-stellen Sie die Höhe von der Bodenplatte zu berücksichtigen, die für layout-änderungen. Es ist schon eine kleine Weile her, seit ich Tat, compact framework Programmieren, so bin ich nicht sicher.Wie du sagst, eher als letztes können Sie abdocken, bringen Sie nach vorne, dann wieder anzudocken... schön!
InformationsquelleAutor jasonh
Klicken Sie rechts auf die upperPanel und wählen Sie "Nach Vorne". Allerdings, ich nicht denke, dass dies wird geben Sie das Ergebnis das Sie wollen. Wenn Sie die Größe, die Unterseite bleibt die gleiche Höhe, während die Obere Platte wird gestreckt, um die form zu füllen.
Mit Ihrem docking-Einstellungen, die Sie mit diesem code könnte den trick tun:
Das Ergebnis, ich will es auf meine Lösung. Versuchen Sie es, bevor Sie downvote.
InformationsquelleAutor Philip Wallace
Legen Sie beide Platten auf "nicht verankert". Das ist: Entfernen Sie die Dock-Wert und deaktivieren Sie die Anchor-Eigenschaft. Dann bewegen Sie die regler, so dass Sie von der Größe, wie Sie möchten, Sie zu bemessen ist.
Danach, beim ändern der Größe des Formulars, sollten Sie die Größe relativ.
BEARBEITEN
Oops, habe es gerade ausprobiert und sicher, dass es nicht funktioniert. Ich mischte diese mit einer Lösung, die automatisch hält Steuerelemente zentriert im Fenster...
Gut, ich denke, würde Sie dann erstellen Sie einen Ereignishandler für das form
Resize
Ereignis und manuell richten Sie die Kontrollen, nachdem die form geändert wurde.^^ kein problem 🙂
Nein, es funktioniert nicht.
Sorry - bearbeitet meine Antwort...
Ich kann zwar sehen, dass meine erste Antwort war eindeutig nicht hilfreich, das Bearbeiten gibt einen gültigen Hinweis auf eine Lösung. Also an alle diejenigen, die downvoting: bitte geben Sie einen Grund in die Kommentare.
InformationsquelleAutor Thorsten Dittmar
Gehen Sie zu Extras, Andere Fenster Dokumentgliederung. Finden Sie die zwei Platten, und tauschen Sie die Reihenfolge von Ihnen. Das Steuerelement, das hat
DockStyle.Fill
an die erste Stelle, um es richtig angedockt. (oder die Letzte.. nie sicher, welches es ist, aber es ist einer von Ihnen :p)Diese nicht lösen, die immer 1/3 und 2/3 Thema aber... die Ursache der Unterseite haben eine Feste Höhe (wenn ich mich nicht Irre). Ich denke, vielleicht die
TableLayoutPanel
unterstützt, obwohl dies...Update: Wie bereits angemerkt in den Kommentaren, dass panel nicht vorhanden in der compact-framework. Also, ich glaube die einfachste Lösung für dieses problem würde dann versuchen, mithilfe der docking, aber aktualisieren Sie die Höhe von der Unterseite, wenn die Größe des Formulars ändert.
BTW, Sie sind richtig über die Bodenplatte mit einer festen Höhe.
Ah, ok. Gut, ich habe noch nie verwendet die Compact Framework, ganz normale WinForms.
InformationsquelleAutor Svish
Wenn Sie wollen, dass diese perfekt funktionieren müssen Sie code hinzufügen, um das Resize-Ereignis der Form, die dann insbesondere arbeitet Sie heraus, die relativen Größen und stellen Sie die Steuerelemente in der richtigen Stelle, nachdem Sie eine Größe.
Wenn Sie nicht besorgt über den Verlust von Präzision und die Formen sind nicht viel bewegen; dies können Sie vermeiden, indem Sie einige relativ intelligente Verankerung. Im wesentlichen sind Sie gehen zu müssen, wählen Sie einen "Züchter" (der Teil des Formulars, wird größer, je größer die form bekommt). In diesem Szenario würde ich wahrscheinlich verankern Sie den oberen Teil nach Oben | Links | Rechts und den unteren Teil nach Oben | Links | Rechts | Unten. Dies würde bedeuten, dass der untere Teil des Formulars wird immer größer, wenn die form erweitert wird. In den meisten Fällen ist dies akzeptabel. Wenn es nicht, verwenden Sie die Resize-Ereignis und code.
InformationsquelleAutor Quibblesome
Der einfachste Weg, dies zu tun ist, um nest-panels. Nur set-up-Platten für oben unten und füllen. Dann nutzen Sie panels in diesen panels, das gleiche zu tun. Die einzigen Probleme, die ich hatte, darin sind datagrid ändern der Größe, das ist immer ein Schmerz sowieso. in diesem Fall müssen Sie einige code, um die Größe des datagrid-Steuerelements auf dem Formular resize-Ereignis.
InformationsquelleAutor Cole
Ich würde gerne einen Punkt hinzufügen, @jasonh Antwort.
Für das panel, nimmt 2/3 der form, die Sie haben zu setzen Sie die AutoScroll-Eigenschaft des Panels auf true.
Dadurch wird der Bedienfeld-display scrollen, wenn das Steuerelement die Größe überschreiten, die Sichtbarkeit der Benutzer und auch sicherstellen, dass die Sichtbarkeit der kleineren Panels, die 1/3 der Formulare Höhe.
InformationsquelleAutor Karthik
Können Sie das gewünschte design mit verschachtelten panels zusammen mit paar Einstellung mit Ankern Eigenschaften.Befolgen Sie die folgenden Schritte aus:
1) Fügen Sie die Form aus und stellen ein auf Panel1. Setzen Sie dessen Dock-Eigenschaft als "Füllung" und ResizeMode als "Wachsen&Schrumpfen'.
2) Fügen Sie den Zweiten panel2, und setzen Sie dessen Dock-Eigenschaft auf 'Unten', Legen Sie die Höhe und setzen Sie die Anchor-Eigenschaft auf "Oben,Links".
3)Hinzufügen der Dritten panel, und setzen Sie dessen Dock-Eigenschaft auf 'None' stellen, Legen Sie die Höhe und setzen Sie die Anchor-Eigenschaft auf "Oben,Unten,Links,Rechts'.
Speichern und Kompilieren. Jetzt alle Platten behielten Ihre relative Positionierung Mit Größenänderung.
InformationsquelleAutor Ranjeet Kumar