c# panel裡面嵌入窗體
現有一個父窗體name是Parent,子窗體name是Son,要讓Son嵌入在Parent的Panel內,則父窗體的初始載入程式碼如下:
private void Parent_Load(object sender, System.EventArgs e){this.IsMdiContainer=true;//設定父窗體是容器
Son mySon=new Son();//例項化子窗體
mySon.MdiParent=this;//設定窗體的父子關係
mySon.Parent=pnl1;//設定子窗體的容器為父窗體中的Panel
mySon.Show();//顯示子窗體,此句很重要,否則子窗體不會顯示}
今天在做專案
最後想到用panel實現,經歷幾次失敗,並查詢資料後,終於搞定
說明:如果多次切換需加入 panel.clear();清空原有panel內容
環境:C# VS2008
方法一:通過給panel載入子元素實現
Form2 form =
new Form2();
form.FormBorderStyle = FormBorderStyle.None; //隱藏子窗體邊框(去除最小花,最大化,關閉等按鈕)
form.TopLevel =
false; //指示子窗體非頂級窗體
this.panel1.Controls.Add(form);//將子窗體載入panel
form.Show();
方法二:指定父容器實現
Form2 form=new Form2();
form.MdiParent=this;//指定當前窗體為頂級Mdi窗體
form.Parent=this.Panel1;//指定子窗體的父容器為
Frm.FormBorderStyle = FormBorderStyle.None;//隱藏子窗體邊框,當然也可以在子窗體的窗體載入事件中實現
panelform.Show();
實際上你把窗體加入了panel,那麼這個窗體已經只是個控制元件了,和普通的textbox控制元件沒什麼兩樣,那麼你能告訴我如何關閉panel中的textbox控制元件嗎,好像沒這麼一說,因此,實際上關閉panel的中子窗體(form),就是從panel中移除子窗體form:程式碼如下:
Form2 form = new Form2();//要宣告為成員變數哦
//新增進panel的按鈕,你應該已經實現了
private void button1_Click_1(object sender, EventArgs e)
{
form.TopLevel = false;//這就是使你窗體變控制元件的一步
form.Dock = DockStyle.Fill;
form.FormBorderStyle = FormBorderStyle.None;
form.Parent = panel1;//你panel的id
form.Show();
}
//關閉panel中子窗體的按鈕
private void button2_Click(object sender, EventArgs e)
{
panel1.Controls.Remove(form);//其實就是一個控制元件的移除
}
- privatevoid 話術管理ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- FormScripts formscripts = new FormScripts();
- formscripts.TopLevel = false;
- formscripts.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- formscripts.Dock = DockStyle.Fill;
- formscripts.Parent = this.panel1;
- //formscr
- privatevoid 話術管理ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- FormScripts formscripts = new FormScripts();
- formscripts.TopLevel = false;
- formscripts.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
- formscripts.Dock = DockStyle.Fill;
- formscripts.Parent = this.panel1;
- //formscripts.MdiParent = this;//直接彈出一個新窗體
- formscripts.Show();
- formscripts.BringToFront();//如果需要在panel1裡面顯示不同的窗體,就要加這句,這樣在切換panel1裡面顯示的窗體時,窗體才能顯示出來
- }
現有一個父窗體name是Parent,子窗體name是Son,要讓Son嵌入在Parent的Panel內,則父窗體的初始載入程式碼如下:
private void Parent_Load(object sender, System.EventArgs e)
{
this.IsMdiContainer=true;//設定父窗體是容器
Son mySon=new Son();//例項化子窗體
mySon.MdiParent=this;//設定窗體的父子關係
mySon.Parent=pnl1;//設定子窗體的容器為父窗體中的Panel
mySon.Show();//顯示子窗體,此句很重要,否則子窗體不會顯示
}