2014-02-12 116 views
0

我需要一些幫助子窗體控件:使用主窗體和子窗體的面板控件

我正在開發一個C#窗體窗體。表格分爲兩個面板。左側面板包含多個按鈕,右側面板用於顯示不同的形式。

因此,當您單擊左側面板上的按鈕時,相應的窗體將顯示在右側面板上。 例如Button1:ShowForm1,Button2:ShowForm2,Button3:ShowForm3

我能夠實現上述情況。但是,我不知道如何實現以下情況: 單擊ShowForm3以顯示Form3,然後在Form3中有一個「ShowForm4」按鈕。如果按鈕被點擊,那麼form3應該被關閉並且Form4應該被顯示在面板中。 我想讓Form4在面板中顯示,而不僅僅是一個彈出窗體(即Form4.show())。 我該怎麼做?謝謝。

我的編碼如下:

private void MainForm_Load(object sender, EventArgs e) 
    { 
     //Master Form 
     this.btn_show1.Click += new EventHandler(btn_show_Click); 
     this.btn_show2.Click += new EventHandler(btn_show_Click); 
     this.btn_show3.Click += new EventHandler(btn_show_Click); 
    } 

    void btn_show_Click(object sender, EventArgs e) 
    { 
     this.pnl_ShowForms.Controls.Clear(); 
     int tag = Convert.ToInt32((sender as Button).Tag); 
     switch (tag) 
     { 
      case 1: 
       Form1 frm1 = new Form1();     
       frm1.FormBorderStyle = FormBorderStyle.None; 
       frm1.Dock = DockStyle.Fill; 
       frm1.WindowState = FormWindowState.Maximized; 
       frm1.TopLevel = false; 
       this.pnl_ShowForms.Controls.Add(frm1); 
       frm1.Show(); 
       break; 
      case 2: 
       Form2 frm2 = new Form2(); 
       frm2.FormBorderStyle = FormBorderStyle.None; 
       frm2.Dock = DockStyle.Bottom; 
       frm2.WindowState = FormWindowState.Maximized; 
       frm2.TopLevel = false; 
       this.pnl_ShowForms.Controls.Add(frm2); 
       frm2.Show(); 
       break; 
      case 3: 
       Form3 frm3 = new Form3(); 
       frm3.FormBorderStyle = FormBorderStyle.None; 
       frm3.Dock = DockStyle.Fill; 
       frm3.WindowState = FormWindowState.Maximized; 
       frm3.TopLevel = false; 
       this.pnl_ShowForms.Controls.Add(frm3); 
       frm3.Show(); 
       break; 
     } 

回答

0

你會使用this.parent得到Panel。在Form3的Button_Click事件中寫下面的代碼。

void btn_Click(object sender, EventArgs e) 
{ 
    Panel mPanel = (Panel)this.Parent; 
    this.Close(); 
    Form4 frm1 = new Form4(); 
    frm1.FormBorderStyle = FormBorderStyle.None; 
    frm1.Dock = DockStyle.Fill; 
    frm1.WindowState = FormWindowState.Maximized; 
    frm1.TopLevel = false; 
    mPanel.Controls.Add(frm1); 
    frm1.Show(); 
} 
+0

謝謝。它工作完美。 – Alvin