问题描述
如何实现vb.net下利用反射实现字符串调用窗体的功能?从数据库中得到窗体的名字,我想根据窗体的名字来打开该窗体。还请各位大大帮帮我,谢谢了!
解决方案
解决方案二:
用C#写的,你弄成VB.net吧privatevoidbutton2_Click(objectsender,EventArgse){Assemblyassembly=Assembly.LoadFile(Application.StartupPath+"\WindowsApplication1.exe");Form3frm=assembly.CreateInstance("WindowsApplication1.Form3")asForm3;if(frm!=null){frm.ShowDialog(this);}}项目名是WindowsApplication1,Form名叫Form3
解决方案三:
stringpath=AssemblyName;stringname=strName;Formfm=(Form)Assembly.Load(path).CreateInstance(name);fm.MdiParent=this.ParentForm;fm.Show();fm.Dock=DockStyle.Fill;
解决方案四:
楼上的大大们,我对C#一点也不了解,能否给个VB.net2005的代码呢?
解决方案五:
DimpathAsString=AssemblyName;DimnameAsString=strName;DimfmAsForm=(Form)Assembly.Load(path).CreateInstance(name)fm.MdiParent=this.ParentFormfm.Show()fm.Dock=DockStyle.Fill
VB和C#转换不复杂。
解决方案六:
DimfmAsForm=(Form)Assembly.Load(path).CreateInstance(name)改成:DimfmAsForm=Assembly.Load(path).CreateInstance(name)
解决方案七:
该了之后提示错误:未将对象引用设置到对象的实例。发现fm=nothing该怎么办?
解决方案八:
DimAssemblyObjAsSystem.Reflection.AssemblyAssemblyObj=System.Reflection.Assembly.LoadFile(My.Application.Info.DirectoryPath&"WindowsApplication8.exe")DimForm3AsForm=AssemblyObj.CreateInstance("WindowsApplication1.Form2")'注意WindowsApplication1是你程序WindowsApplication8.exe的根命名空间Form3.Show()