通过一个方法显示所有子窗体

本文关键字:显示 窗体 方法 一个 | 更新日期: 2023-09-27 18:09:11

我有一个mdi表单,主菜单上有很多子表单,我使用这样的代码来打开child:

        frmCustomers yeni = new frmCustomers();
        if (GenelIslemler.formAuthCheck(yeni.Name.ToString()))
        {
            if (!IsOpen(yeni.Name.ToString()))
            {
                yeni.MdiParent = this;
                yeni.WindowState = FormWindowState.Maximized;
                yeni.Show();
            }
        }
        else
        {
            MessageBox.Show("You dont have rights to access!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

但是我想写一个方法然后把form调用到那个方法,比如

openForm (frmCustomers);

和openForm方法应该像这样

openForm(农场){…}

我该怎么办?

通过一个方法显示所有子窗体

这是为每个。NET应用程序内置的反射系统所做的工作

using System.Reflection;
private void openForm(string formName)
{
    // First check if this form is authorized 
    if (GenelIslemler.formAuthCheck(formName))
    {
        // Then check if is already opened
        if (!IsOpen(formName))
        {
            // And now transform that string variable in the actual form to open
            // This is the critical line. You need the fully qualified form name. 
            // namespace + classname 
            Type formType = Type.GetType ("RapunzoApps.ThisApp." + formName);
            ConstructorInfo ctorInfo = formType.GetConstructor(Type.EmptyTypes);
            Form theForm = (Form) ctorInfo.Invoke (null);
            theForm.MdiParent = this;
            theForm.WindowState = FormWindowState.Maximized;
            theForm.Show();
        }
    }
    else
    {
        MessageBox.Show("You dont have rights to access!", "uyarı", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}