您好我想从MDI Parent打开一份表格。
如果For已经打开,那么它应该被激活或打开新表格..
现在我正在使用foreach
循环。但我不想使用循环。
foreach (Form frm in Application.OpenForms)
{
if (frm is FrmPrd)
{
frm.Activate();
frm.BringToFront();
}
else
{
FrmPrd _OFrmPrd = new FrmPrd();
_OFrmPrd.Show();
return;
}
}
}
PLZ。建议我如何在没有循环的情况下使用它。
答案 0 :(得分:0)
使用Linq隐藏循环:
var form = Application.OpenForms.OfType<FrmPrd>().FirstOrDefault();
if (form == null) new FrmPrd().Show();
else {
form.WindowState = FormWindowState.Normal;
form.Activate();
}
或者只是不要忘记实例,所以你根本不需要循环,这是一个优秀的解决方案,因为它也避免了Application.OpenForms中的错误:
FrmPrd productForm;
private void ShowProductButton_Click(object sender, EventArgs e) {
if (productForm == null) {
productForm = new FrmPrd();
productForm.FormClosed += (s,ea) => productForm = null;
productForm.Show();
}
else {
productForm.WindowState = FormWindowState.Normal;
productForm.Activate();
}
}