如何从另一个子表单中打开子表单?

时间:2016-11-17 10:22:51

标签: c# winforms parent-child mdi

我正在开发一个Windows应用程序。我有一个MainForm(父)和几个childForm。 MainForm中有一个包含childForm名称列表的列表视图,通过单击列表中的每个名称,相关的childForm显示,之前的ChildForm关闭。

我使用此代码显示childForm并关闭MainForm.cs中的上一个childForm(ParentForm):

CloseForms();
frm_draft = new frm_ShowDraft();
frm_draft.MdiParent = this;
frm_draft.Show();

CloseForm()是一种检查哪个childForm运行并关闭它的方法。 到目前为止一切都很好。

在其中一个子形态中有一个Button。当用户点击它时,它应该关闭这个childForm并显示另一个。但是当我点击按钮时,childForm2显示出MainForm。如何在MainForm中显示它?

按钮点击事件中的代码:

this.close();
frm_c2 = new frm_child2();
frm_c2.MdiParent = new MainForm().ParentForm; /// Or this.MdiForm
frm_c2.Show();

2 个答案:

答案 0 :(得分:2)

您应该设置相同的MdiForm并在结尾处调用Close:

$TrafficManagerProfile = Get-AzureRmTrafficManagerProfile -Name "TMName" -ResourceGroupName "TMRGName"

答案 1 :(得分:0)

  

http://www.independent-software.com/weifenluo-dockpanelsuite-tutorial-cookbook/

     

要在主表单中显示子表单,请使用WeiFen Luo库。   此控件可以更轻松地将表单停靠到主窗体可视演播室停靠屏幕

     

表格内有3个表格:

enter image description here

  

确保IsMdiContainter道具为真。

enter image description here

  

示例:

public Form1()
{
  InitializeComponent();

   Form2 f2 = new Form2(); // create new form

   // dockPanel is an control from WeiFen Luo more info see the link
   // dockPanel control is docked in your mainform.
   // this will open Form2 in the dockPanel and align it left
   f2.Show(dockPanel, DockState.DockLeft); 

 }
  

更多对接选项:

     
      
  1. DockState.Fill将表格停靠在空洞dockPanel
  2. 上   
  3. DockState.Right停靠在dockPanel右侧的表单
  4.   
  5. DockState.Top停靠在dockPanel顶部的表格
  6.         

    更多选项检查链接   这种控制将对接对接形式的handel负责,并将为您处理分配计算。