c - 如何在没有循环的情况下从 MDI Parrent 激活 MDI 子窗体

标签 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;
                        }
                    }
                }

请。建议我如何在没有循环的情况下使用它。

最佳答案

使用 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();
        }
    }

关于c - 如何在没有循环的情况下从 MDI Parrent 激活 MDI 子窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20213625/

相关文章:

c - 如何将 C 结构转换为 TLV 格式或平面内存缓冲区

vb.net - 当用户关闭应用程序时禁用对所有表单的验证

c# - RichTextBox无法插入图片

winforms - 为什么我在关闭 Windows 窗体应用程序后会收到错误消息?

c - 在 for 循环中使用 getch() 的重要性

在包含函数退出后通过其地址调用嵌套函数?

c - FUSE - 详细文档

c - C语言中char arr[] = "OX|-"如何工作

winforms - 你如何固定 winforms 标签的高度和宽度以接受可变长度的文本

c# - Windows 窗体应用程序命令行参数