2017-05-25 6 views
0

Ich brauche Hilfe. Ich habe winform, wie eine, die auf dem Bild gezeigt wird, also möchte ich die nächsten Dinge verbessern, wenn ich auf den ersten Knopf klicke, auf der rechten Seite wird Inhalt von einem anderen winform gezeigt, ist das möglich? Ich möchte keine Panels verwenden.C#, WinForm in einem anderen Winform

enter image description here

+0

Sie sprechen über 'MDI FORM' – Rahul

+2

https://StackOverflow.com/Questions/7691468/Can-I-Host-A-Windows-Form-inside -a-control/7692113 # 7692113 –

+1

_Ich möchte keine Panels_What verwenden? Was möchtest du verwenden? – Pikoh

Antwort

2

Warum Sie einbetten nicht nur ein einzelner UserControl dynamisch den aktuellen Seite oder wenn Sie darstellen möchten alles auf Design-Zeit tun - eine benutzerdefinierte TabControl?

gezeigt Inhalt von einem anderen winform

im Allgemeinen Sie ein Popup-Fenster in eine andere nicht einbetten, sondern steuert. Andernfalls müssen Sie beschäftigen mit versteckt Minimieren, Maximieren Schließen usw.

+0

Ich versuche, Tab-Steuerelement zu implementieren, aber ich kann die Navigationsleiste nicht ausblenden –

+1

Verwenden Sie ein UserControl als empfohlen. Es funktioniert ganz gut und es ist nicht schwer, die Seiten selbst zu verwalten. Normalerweise würde ich nur die aktuelle Seite verfügbar halten. Alternativ können Sie eine Drittanbieterkomponente mit Registerkarten verwenden, mit der die Registerkartenleiste ausgeblendet werden kann. – Phil1970

0

können Sie TabControl Steuerelement verwenden -> für jeden spezifischen Inhalte, die Sie Sie wollen einfach nur eine TabPage TabControl hinzuzufügen haben anzuzeigen, und wenn eine bestimmte Menüoption ausgewählt ist, wechseln Sie einfach zur gewünschten TabControl-Seite.

myTabControl.SelectedIndex = 1; // for selecting and displaying page with index 1 

Zur Navigation Header myTabControl, stellen diese Requisiten (in Konstruktor oder in Form Load -Ereignis zu verstecken.

myTabControl.ItemSize = new Size(0, 1); 
myTabControl.SizeMode = TabSizeMode.Fixed; 

Dann haben Sie nur Inhalt der TabControl Seite angezeigt, ohne Navigation Header

+0

Ich kann Navigation Header mit diesen Requisiten nicht ausblenden. –

+0

Versuchen Sie eine weitere Zeile hinzufügen: 'myTabControl.Appearance = TabAppearance.FlatButtons;' ich 100% bin, dass dies funktioniert :) – pitersmx

+0

Ich stelle es in Form Load -Ereignis, aber leider ist es immer noch hier –

0

Zuerst machen es this.IsMdiContainer = true; entweder aus Entwurfszeit oder Laufzeit ist.

Geben Sie dann im click-Ereignis der Schaltfläche den folgenden Code ein.

 childForm frm = new childForm(); 
     frm.MdiParent = this; //the current mdi parent form 
     frm.FormBorderStyle = FormBorderStyle.None; 
     frm.Dock = DockStyle.Fill; 

     frm.Show(); 

output

0

können Sie verwenden mdi (Multiple Document Interface): wenn Sie ein Formular Start innerhalb Mainform möchten, verwenden Sie diesen Code ein:

Dim hotelForm As New HotelForm() 
    HotelForm.MdiParent = Me // Me is your parent form want to open hotelForm inside 
    HotelForm.Show() 
0

Alle Formen haben eine Eigenschaft TopLevel, indem Sie diese Eigenschaft auf false setzen, können Sie dieses Formular als Steuerelement verwenden und es zu einem Panel-Steuerelement hinzufügen.

Siehe unten Pseudo-Code:

Form2 newForm = new Form2(); 
newForm.TopLevel = false; 

myPanel.Controls.Add(newForm); 
newForm.Show(); 

Danach wird Ihr Hauptformular Design wie als Navigationssteuerung und einem Panel neben der Docking Station „Füllen“, dann auf auf eine beliebige Navigationstaste aussehen sollte, erstellen Sie einfach die gewünschte Form und setzen TopLevel zu false, dann zeigen Sie es auf dem Panel