当我单击工具条菜单时,它每次都会显示新表单。我想停止它一次又一次地显示相同的表单。在给定的代码中,form2 一次又一次地显示。我想停止它,让它显示一次。
喜欢 :
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.MdiParent=this;
f.Show();
}
你应该能够做这样的事情:
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
var f2 = this.MdiChildren.OfType<Form2>().FirstOrDefault();
if (f2 != null)
{
f2.Show();
return;
}
Form2 f = new Form2();
f.MdiParent=this;
f.Show();
}
如果表单已经存在,这将显示表单,否则创建并显示它。
另一种方法是在类级别声明 Form2 类型的变量:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Form2 f2 = null;
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
if (f2 == null || f2.IsDisposed)
{
f2 = new Form2();
f2.MdiParent = this;
f2.Show();
}
else
{
if (f2.WindowState == FormWindowState.Minimized)
{
f2.WindowState = FormWindowState.Normal;
}
f2.Activate();
}
}
}