2017-05-25 111 views
0

我需要幫助。我有winform,就像圖片上顯示的那樣,所以我想改善下一件事情,當我點擊第一個按鈕時,右側會顯示來自另一個winform的內容,這可能嗎?我不想使用面板。C#,WinForm在另一個winform

enter image description here

+0

您在說'MDI FORM' – Rahul

+2

https://stackoverflow.com/questions/7691468/can-i-host-a-windows-form-inside -a-control/7692113#7692113 –

+1

_我不想使用panels_爲什麼?你想用什麼? – Pikoh

回答

2

你爲什麼不只是嵌入動態的單一UserControl表示當前或者如果你想在設計時做的一切 - 自定義TabControl

顯示內容從另一個WinForm的

通常不需要嵌入的彈出窗口到另一個,而不是控制。否則,你必須處理隱藏最小化,最大化,關閉

+0

我試圖實現選項卡控制,但我無法隱藏導航欄 –

+1

按照建議使用UserControl。它工作得很好,自己管理頁面並不困難。通常,我只會保留當前頁面。或者,您可以使用具有允許隱藏選項卡欄的選項卡控件的第三方組件。 – Phil1970

0

您可以使用TabControl控件 - >你要顯示你的每個具體內容只需要一個的TabPage添加到TabControl的,當一個特定的菜單選項被選中,只需切換到所需的TabControl頁面即可。

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

要隱藏myTabControl的導航標題,設置這些道具(在構造函數或在Form_Load事件:

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

然後,你只有顯示的TabControl頁面的內容,而不導航標題

+0

我無法隱藏導航頭與這些道具。 –

+0

嘗試添加一個多行: 'myTabControl.Appearance = TabAppearance.FlatButtons;' 我100%,這一工程:) – pitersmx

+0

我將它設置爲Form_Load事件,但不幸的是在這裏仍然 –

0

首先使其爲this.IsMdiContainer = true;或者從設計時間運行時間

然後在按鈕的單擊事件處放置以下代碼。

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

     frm.Show(); 

output

0

您可以使用MDI(多文檔界面): 當你想裏面MainForm的形式開始,使用下面的代碼:

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

所有形式的有一個屬​​性TopLevel,通過將此屬性設置爲false,然後您可以將該窗體作爲控件處理,並將其添加到面板控件。

請參見下面的僞代碼:

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

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

之後,主窗體的設計應該看起來像一個導航控制,它旁邊有一個面板停放「填充」,然後單擊任何導航按鈕,只需要創建並設置TopLevel爲false,然後在面板上顯示它