我做了一个主界面(MDI容器),里面包括菜单(menu)控件,菜单里面的每一选项都定义了点击事件
基本上,它们的点击事件都是打开一个子窗体,代码大概就是:
form f = new form();//form是某子窗体
f.MdiParent = this;
f.show();
那我就郁闷了,如果菜单里面总共有一百个选项,我就要写一百次实例子窗体-MdiParent属性等于this-show出来
一写就写了几百行代码,如果有天那个子窗体要删掉或怎样,我就要在这一百个中找到那个子窗体
这样太烦琐了,可维修性差,有没有更简洁的方法,比如把打开子窗体的点击事件归纳为一个
各位经验比较丰富的高手们,有没有什么good idea,望指点迷津~!!谢谢

解决方案 »

  1.   

    你打开的都是窗体 
    基本上都应该继承自Form那么你可以考虑用反射来实现
    每个菜单项目的tag里面保存要打开的窗体的string的完整名字 比如 XXX.UserForm.CreateUser
    然后启动的时候反射取得实例
    直接show
      

  2.   

    补上示意代码
    实际用的时候可能有点出入     System.Reflection.Assembly ass;  
         ass = System.Reflection.Assembly.GetExecutingAssembly(); 
         Form from = (Form)ass.CreateInstance("XXX.UserForm.CreateUser ");
         from.Show()做可扩展的程序经常这么干