Autosize-Form mit TabControl

Ich habe eine Windows Form mit einer Reihe von Steuerelementen und es funktioniert Prima. Alle Steuerelemente befinden sich in einem TableLayoutPanel die autosizes nach den Kontrollen base-Größe und die Form autosizes so das panel, so dass ich nicht wirklich haben, um über sorgen Größen in verschiedenen Plattformen und Computern, da sollte alles die Größe, nach der die aktuelle Konfiguration der Einstellungen.

Zum Beispiel, hier ist ein einfaches Beispiel, wie es aussieht.
Der relevante code ist:

//...code defining all the other Commands and .Add()'ing them to the Panel
form.Controls.Add(Panel);
form.AutoSize = true;
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.ShowDialog();

Autosize-Form mit TabControl

Will ich jetzt, um das gesamte panel und platzieren Sie es in einem TabControl-Steuerelement so, dass es nur ein Register unter vielen anderen. Ich Tat dies, wie folgt:

//...code defining all the other Commands and .Add()'ing them to the Panel
TabControl tabControl = new TabControl();
tabControl.Dock = DockStyle.Fill;
TabPage tabPage = new TabPage("C1");
tabPage.Controls.Add(Panel);
tabControl.TabPages.Add(tabPage);
form.Controls.Add(tabControl);
form.AutoSize = true;
form.FormBorderStyle = FormBorderStyle.FixedDialog;
form.ShowDialog();

Also im Grunde, statt der addition der Panel zu den Form ich hinzufügen, um die TabPage wird Hinzugefügt, um die TabControl wird Hinzugefügt, um die Form. Allerdings führt dies in:
Ergebnisse http://img51.imageshack.us/img51/685/5112013112725am.jpg

Die Dokumentation besagt, dass die AutoSize Eigenschaft für TabControl und TabPage ist die bloße Infrastruktur-ohne Relevanz. Die meisten der "Lösungen" die ich gefunden habe, schlage mit .Dock = DockStyles.Fill, welches dazu beigetragen hat, dass die TabControl füllt nun das Formular wie oben zu sehen, anstatt nur auf einer noch kleineren Teil davon. Die Form selbst bleibt jedoch unverändert.

Habe ich gedacht, der mit den Panel's Größe und die TabControl's Größe gleich (oder einer Funktion) es ist, aber ich habe bemerkt, dass die Size parameter offenbar nur geändert, wenn sich die Panel lackiert ist, da das hinzufügen von Steuerelementen ändert nicht an allen, also ich würd noch warten, bis die Panel zu malen und dann die Größe ändern, die hört sich schlampig. Gibt es eine bessere Lösung?

UPDATE
Mit der Verankerung und Einstellung

Panel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
tabControl.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;

Einfach führen:

http://img803.imageshack.us/img803/3453/5112013125710pm.jpg

Zusammenhangsloser Kommentar: Deine GUI-scheint eine Art von Plan, Zeichnung oder Grafik-designer-Anwendung. Ich empfehle, dass Sie verwenden jeweils aktuellen UI Technologien für diesen und lassen winforms hinter sich. Here ist ein Beispiel für eine ähnliche Sache getan in WPF + MVVM, Unterstützung von Animationen, durch ziehen mit der Maus, Animationen, und andere sehr interessante visuelle und interaktive features.
Nicht zu vergessen das problem, du bist hier (das ist der Mangel an Unabhängigkeit von der Auflösung von winforms) absolut NICHT VORHANDEN, in neueren Technologien.
Ja, ich sah, dass link und... das sieht ziemlich cool aus. Danke dafür, dass ich verbringen Sie den rest des Tages lernen die WPF. Auch... Sie sind wirklich leidenschaftlich über WPF, kann ich sagen.

InformationsquelleAutor Wasabi | 2013-05-11

Schreibe einen Kommentar