永发信息网

C# MdiParent

答案:2  悬赏:80  手机版
解决时间 2021-02-08 05:22
  • 提问者网友:書生途
  • 2021-02-07 12:19
现在有一个Mdi容器 容器1 ,其中有2个窗体 窗体1 窗体2,
我现在的想法是,在容器1中先打开窗体1,当然MdiParent=this;
然后通过窗体1再打开窗体2,要求是这2个窗体的MdiParent都必须是最上层的Mdi容器,即容器1.

我想到了一种方法,在容器1中先声明这2个窗体实例,将他们的MdiParent都设为容器1,这样的话,只要调用就可以打开了,但随之又有新问题出现,在子窗体1中无法调用窗体2的实例,他们是2个不同的类!

请问该如何解决呢?
最佳答案
  • 五星知识达人网友:孤独的牧羊人
  • 2021-02-07 13:18
首先在主窗体的加载事件中设置一些属性,代码如下:
private void Form1_Load(object sender, EventArgs e)
{
this.IsMdiContainer = true;
this.WindowState = FormWindowState.Maximized;
}
当单击“打开”按钮时,调用显示Child1方法:
private void open_Click(object sender, EventArgs e)
{
Form1 Parent = new Form1();
Parent.DisplayForm2();
}
上面的代码用到DisplayForm2方法,其代码如下:
public void DisplayForm2()
{
Form2 Child1 = new Form2();
Child1.MdiParent =(Form)Parent;
Child1.Show();
}
此外,在Form1窗体的后台代码中还需要定义一个显示Child2的方法,其代码如下:
public void DisplayForm3()
{
Form3 Child2 = new Form3();
Child2.MdiParent = (Form)Parent;
Child2.Show();
}
当单击Child1中的打开按钮时,显示Form3窗体,其代码如下:
private void open_Click(object sender, EventArgs e)
{
Form1 ParentForm = new Form1();
ParentForm.DisplayForm3();
}
全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-02-07 14:54
这样在容器窗口中将两个子窗体声明为静态的就可以了: public static form3 f3 = new form3(); public static form4 f4 = new form4(); private void form2_load(object sender, eventargs e) { f3.mdiparent = this; f4.mdiparent = this; } private void 窗体1toolstripmenuitem_click(object sender, eventargs e) { f3.show(); } private void 窗体2toolstripmenuitem_click(object sender, eventargs e) { f4.show(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯