如果事件一再发生且之前打开的表格尚未关闭?然后问题存在,因为我们想要在打开新表单之前关闭先前打开的表单.为此,我做了一个功能
frmItem a = new frmItem();
public bool CheckForm()
{
Form form;
form = Application.OpenForms[a.Text];
if (form == null)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
并在btn_Click我写了这段代码
private void buttonItem4_Click(object sender, EventArgs e)
{
frmAssets formSecond = new frmAssets();
if (CheckForm())
{
formSecond.MdiParent = this;
formSecond.Show();
}
else
{
MessageBox.Show("Form Already Open Exists!");
}
}
Run Code Online (Sandbox Code Playgroud)
这显示了消息"表格已经打开存在!" 如果我已经打开表格,工作正常!但那么在打开新表格之前我应该如何关闭已打开的表格......?我试过a.close(); 通过替换MessageBox.Show("Form Already Open Exists!"); 但没有缘故.
通过Application.OpenForms检查是否打开,并且操纵MdiParent非常危险,尤其是MdiParent操作低级WinAPI.
我建议将要检查和关闭的表单实例传递给父表单,然后您可以检查实例是否已打开,然后关闭它.
正如评论中所指出的,请进行ShowDialog()调用,而不是这个MdiParent和Show调用.