2011-04-08 45 views
4

我正在構建一個兒童學習應用程序,點擊面板上的按鈕,我想在面板的相同位置顯示不同的表單。你可以請幫助任何步行或教程鏈接?如何在一個Windows Form面板的一個Csharp面板中使用多個窗體?

+3

帖子需要直接編碼的幫助應在計算器上公佈的內部兩種形式。這個垂直線用於軟件開發的專業討論。 – 2011-04-08 09:31:38

回答

6

這個問題應該已經發布在Stackoverflow網站而不是在這裏。

但是你可以用這種方法來處理這種情況。

  subForm = new SubFormYouWantToLoad(); 
      subForm.TopLevel = false; 
      subForm.FormBorderStyle = FormBorderStyle.None; 
      ContainerPanel.Controls.Add(subForm , 0, 1); 
      subForm .Visible = true; 

當您單擊特定按鈕時,可以添加此代碼。 這裏每個子窗體都作爲控件添加到面板。在添加其他子窗體之前,應該從面板的控制列表中刪除子窗體。爲此,最好刪除,關閉並處置第一個。

 ContainerPanel.Controls.Remove(activeform); 
     activeform.Close(); 
     activeform.Dispose(); 
+0

這是一種沒有MDI的多種形式。謝謝:) – dariol 2013-04-05 21:55:36

+0

你的答案不是一個好的解決方案,是誤導。您不應將頂級控件添加到控件。 – VahidNaderi 2013-09-11 07:08:58

+0

@Vimal Raj子窗體控件不顯示在面板中,除了空白窗口 – 2013-10-03 18:47:12

3

而是形式使用用戶控件和中板加載它們

樣,如果你想顯示的UserControl1

panel1.Controls.Clear(); 
panel1.Visible = true; 
UserControl1 usr1 = new UserControl1(); 
usr1.Show(); 
panel1.Controls.Add(usr1); 

如果usercontrol2

panel1.Controls.Clear(); 
panel1.Visible = true; 
UserControl1 usr2 = new UserControl2(); 
usr2.Show(); 
panel1.Controls.Add(usr2); 
+0

後在另一個窗體的面板中顯示窗體不關閉..我使用ActiveForm.Close();那麼它將關閉主應用程序。我能做些什麼來解決這個問題? – MSU 2011-04-09 10:29:54

+0

你想關閉什麼,發佈你在問題中寫的代碼 – Dotnet 2011-04-09 10:38:53

0

我用這個代碼關閉了面板上的窗體,但沒有工作..

private void button12_Click(object sender, EventArgs e) 
    { 
     dontShowPANEL(); 
     //ActiveForm.Close(); 
     MainImaginCp kj = new MainImaginCp(); 
     //kj.Visible = false; 
     kj.panel2.Controls.Clear(); 
     panel1.Visible = true; 
     EngABCLearning usr1 = new EngABCLearning(); 
     usr1.Show(); 
     kj.panel2.Controls.Add(usr1); 
     //kj.Focus(); 
    } 

我用下面的代碼在面板中顯示窗體。

private void toolStripMenuItem1_LR_ENG_Click(object sender, EventArgs e) 
    { 
     //kids.Form2 hj = new kids.Form2(); 
     //hj.Show(); 


     EngABCLearning gh = new EngABCLearning(); 
     //gh.Show(); 
     gh.TopLevel = false; 
     gh.FormBorderStyle = FormBorderStyle.None; 
     //Panel2.Controls.Add(subForm, 0, 1); 
     panel2.Controls.Add(gh); 
     gh.Visible = true; 
    } 

這是關閉我的主窗體並退出應用程序。

0

嘗試了這一點我已經加載到一個面板

private void Form1_Load(object sender, EventArgs e) 
    { 
     Form2 f1 = new Form2(); 
     f1.TopLevel = false; 
     f1.AutoScroll = true; 
     panel1.Controls.Add(f1); 
     f1.Dock = DockStyle.Left; 
     f1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
     f1.Show(); 
     //form2 
     Form3 f2 = new Form3(); 
     f2.TopLevel = false; 
     f2.AutoScroll = true; 
     panel1.Controls.Add(f2); 
     f2.Dock = DockStyle.Left; 
     f2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
     f2.Show(); 



    } 
相關問題