当存在大量的子窗体的时候,父窗体管理起来就比较麻烦了,能不能有比较快捷的方式 呢?近期参考了部分网友的想法,自己整理一个比较高效的方法(自我感觉良好 ~~~ ),请多多指教 ~~ 用子窗体的Name进行判断,如果已经存在则将他激活,返回true,如果不存在的话,就实例一个窗体,返回false 支持多个应用程序域之间窗体类的传替 ' 输入参数: 1 :childFrmName --- 窗体名称, 2 :strNameSpace --- 域名空间, private bool OpenChildFrm( string childFrmName) ... { foreach(Form childFrm in this.MdiChildren) ...{ //用子窗体的Name进行判断,如果已经存在则将他激活 if(childFrm.Name == childFrmName) ...{ if(childFrm.WindowState == FormWindowState.Minimized) childFrm.WindowState = FormWindowState.Normal; childFrm.Activate(); return true; } } //ObjectHandle用于在多个应用程序域之间传递对象(处于已包装状态),CreateInstance:创建实例 string strNameSpace ="WindowsApplication"; ObjectHandle obj =Activator.CreateInstance(null,strNameSpace+"."+childFrmName); //obj.Unwrap返回被包装的对象 Form frm =(Form)obj.Unwrap(); frm.MdiParent = this ; frm.Show(); return true; } 下一步可以实现: 1 :定义一个可重载的事件,用于窗体间的调用如:参数传替等; 2 :在调用本函数的时候就可以重载 1中的事件 实现窗体间的互交;