如何从MDI Parrent激活MDI子窗体而不循环

时间:2013-11-26 09:54:02

标签: c winforms

您好我想从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。建议我如何在没有循环的情况下使用它。

1 个答案:

答案 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();
        }
    }