我有Form1
2 个单选按钮 (rb1
和rb2
) 和一个普通按钮 ( btn
)。当我单击时,btn
我应该打开Form2
,作为Form1
if的 MDI childrb1
被选中,或者作为普通Dialog
ifrb2
被选中。而且,任何时候都只能Form2
打开一个。
这是我的代码:
public partial class Form1 : Form
{
Form2 f2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (f2 != null)
{
MessageBox.Show("Close form!");
return;
}
f2 = new Form2();
if (radioButton1.Checked == true)
{
this.IsMdiContainer = true;
f2.MdiParent = this;
f2.Show();
}
else
{
f2.Show();
}
f2.FormClosed += f2_FormClosed;
}
void f2_FormClosed(object sender, FormClosedEventArgs e)
{
this.IsMdiContainer = false;
f2 = null;
}
}
一切都按原样工作,除非我Form2
作为 MDI 子最大化然后关闭它。之后屏幕保持不变(因为我什至没有关闭Form2
)但我可以打开新Form2
的,然后Form1
的标题是“ Form1 - [Form2]
”,如果我重复这个过程,它将是“ Form1 - [Form2] - [Form2]
”,等等。
我发现我的f2_FormClosed
方法应该是
void f2_FormClosed(object sender, FormClosedEventArgs e)
{
f2.Hide(); // <<<<<<<<-----------NEW
this.IsMdiContainer = false;
f2 = null;
}
但我不知道为什么;Form2
应该关闭,我不知道我为什么要隐藏它?!
谢谢!