通过方法显示所有子表单

时间:2013-04-13 09:16:56

标签: c# mdichild mdiparent

我有一个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) {...}

我该怎么办?

1 个答案:

答案 0 :(得分: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);
    }
}