System.Windows.Forms.Form mForm;
改为:
Type mFormType;点击的时候把Form的Type传进去实例化Form:Form frm = (Form)Activator.CreateInstance( mFormType );frm.Show();//销毁...
改为:
Type mFormType;点击的时候把Form的Type传进去实例化Form:Form frm = (Form)Activator.CreateInstance( mFormType );frm.Show();//销毁...
解决方案 »
- 请问高手用C#给手机发短信
- 做过触摸屏应用的同行请解答,谢谢
- c#怎么直接调用桌面快捷方式
- 这个如何读出特定的信息到我们的程序中, 类型:磁卡阅读器 型号规格:hce-402 软件版本:ver8.06
- 一段小代码
- 引发的TypeLoadException 异常 求高人帮我看看 我哪里做错了
- sql语句有错帮忙改正啊!
- 虚心请教为何报表弹出登陆框
- 代码的左端出现行号???
- .NET版里为何有这么多的散分贴,强烈建议版主提出整改方案。
- 如何在C#中表示各种颜色?
- 怪事, 关于windows的DataGrid设定DataSource为DataView的时候, 报错, {"Specified cast is not valid." }
这里的mFormType是一个字符串吗?那Type又是什么呢?能使用我上面内的代码提供一个实例吗?
{
...
System.Windows.Forms.Form mForm;
System.Type mFormType; // 增加一个Form类型的属性
...
}class OtherForm:System.Window.Form
{
...
}class myForm:System.Window.Form
{
...
myForm_Load(..)
{
System.Windows.Forms.MainMenu myMainMenu;
myMenuItem tmpMI;
this.MainMenu=myMainMenu=new System.Windows.Forms.MainMenu();
myMainMenu.MenuItems.Add(tmpMI=new myMenuItem(..));
tmpMI.Click+=new System.EventHandler(this.miClick);
this.MiAddForm(tmpMI,new OtherForm());
}
...
private void miClick(object sender,System.EventArgs e)
{
myMenuItem tmpMI=(myMenuItem)sender;
if(tmpMI.mForm已实例化)
{
tmpMI.mForm.Activate();//激活
return;
}
//以下该如何解决mForm未实例化的问题?
//不能使用tmpMI.mForm=new OtherForm(),因为OtherForm在变
//使用tmpMI.mForm=new (TypeOf(tmpMI.mForm))()报错
else
{
tmpMI.mForm = (Form)Activator.CreateInstance(tmpMI.mFormType); //这里根据Form的类型,动态创建
}
tmpMI.mForm.Show();
}
private void MiAddForm(myMenuItem mi,System.Windows.Forms.Form frm)
{
mi.mForm=frm;
mi.mFormType = frm.GetType();
frm.MDIParent=this;
frm.Dispose();
}
...
}