我可以重复使用已为多个表单处理的表单吗?

本文关键字:表单 处理 我可以 | 更新日期: 2023-09-27 18:35:27

我写了下面的代码来重用处理掉的表单。但这是硬编码的,仅限于一种形式。我想使用相同的方法来检查和打开我应用程序中的所有表单。

    private void CheckMdiChildren(Form frm)
    {
        if (frm.IsDisposed)
        {
            frm = new MembersList();
            frm.Show();
        }
        else
        {
            foreach (Form f in this.MdiChildren)
            {
                if (f.GetType() == frm.GetType())
                {
                    f.Focus();
                    return;
                }
            }
            frm.MdiParent = this;
            frm.Dock = DockStyle.Fill;
            frm.Show();
        }
    }

我正在传递参数 frm,它是不同形式的对象,例如。

        this.CheckMdiChildren(mbl);

        this.CheckMdiChildren(exc);

但上面的代码总是打开成员列表窗体。

我已经在全球范围内为MainForm声明了以下表格

    ExerciseChart exc = new ExerciseChart();
    MembersList mbl = new MembersList();

当我在本地使用上述声明时,它可以正常工作。

有什么方法可以将此功能用于多种形式吗?

感谢快速帮助,不要犹豫,询问更多详细信息或代码!

我可以重复使用已为多个表单处理的表单吗?

Activator.CreateInstance 能够在运行时创建实例。使用 form 参数作为激活器的类型,并将 CreateInstance 方法强制转换为Form

var form = ( Form ) Activator.CreateInstance( frm.GetType() );