0

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

        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);
        }

但我想编写一个方法,然后调用该方法的表单,例如

openForm(frmCustomers);

和 openForm 方法应该是这样的

openForm(Form frm) {...}

我能怎么做?

4

1 回答 1

2

这适用于每个 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);
    }
}
于 2013-04-13T09:38:47.973 回答