通过一个方法显示所有子窗体
本文关键字:显示 窗体 方法 一个 | 更新日期: 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);
}
}