C# MDI窗口问题

2025-03-04 12:43:22
推荐回答(3个)
回答1:

两种方法,方法一,最为简单,show() form2的时候隐藏form3,show() form2的时候隐藏form3,在告诉你一点,mdi中的子窗口是不能再有子窗口的,换句话说就是mdi中的子窗口是不能作为父窗口的。方法二,新建一个类,就像默认的program类一样,控制form2和form3 show(),在form2销毁的时候查找form3 如果存在就show() 出来不存在就实例化后再show() form3销毁的时候同理,自己去琢磨,给你把代码写出了就没意思了

回答2:

在form1 定义一个静态变量为0 确定打开哪个窗体
form1 加载的时候判断静态变量 如果为2打开窗口2 为3打开窗口3
然后你按钮单击的时候只要修改form1的静态变量就可以了

form1的代码

public static int a = 0;
public void form_open()
{
if (a == 2)
{
Form2 f2 = new Form2();
this.Hide();
f2.ShowDialog();
this.Show();
}
if (a == 3)
{
Form3 f3 = new Form3();
this.Hide();
f3.ShowDialog();
this.Show();
form_open();
}
}
private void button1_Click(object sender, EventArgs e)
{
a = 2;
form_open();
}

form2的

private void button1_Click(object sender, EventArgs e)
{
Form1.a = 3;
this.Close();
}
form3的

private void button1_Click(object sender, EventArgs e)
{
Form1.a = 2;
this.Close();
}

回答3:

先把form2和Form3都设为form1的子窗体,然后form2在在弹出form3时,把form2的窗体设为:this.hide();然后form3弹出form2是this.visible=false;this.close();