我做了一个主界面(MDI容器),里面包括菜单(menu)控件,菜单里面的每一选项都定义了点击事件
基本上,它们的点击事件都是打开一个子窗体,代码大概就是:
form f = new form();//form是某子窗体
f.MdiParent = this;
f.show();
那我就郁闷了,如果菜单里面总共有一百个选项,我就要写一百次实例子窗体-MdiParent属性等于this-show出来
一写就写了几百行代码,如果有天那个子窗体要删掉或怎样,我就要在这一百个中找到那个子窗体
这样太烦琐了,可维修性差,有没有更简洁的方法,比如把打开子窗体的点击事件归纳为一个
各位经验比较丰富的高手们,有没有什么good idea,望指点迷津~!!谢谢
基本上,它们的点击事件都是打开一个子窗体,代码大概就是:
form f = new form();//form是某子窗体
f.MdiParent = this;
f.show();
那我就郁闷了,如果菜单里面总共有一百个选项,我就要写一百次实例子窗体-MdiParent属性等于this-show出来
一写就写了几百行代码,如果有天那个子窗体要删掉或怎样,我就要在这一百个中找到那个子窗体
这样太烦琐了,可维修性差,有没有更简洁的方法,比如把打开子窗体的点击事件归纳为一个
各位经验比较丰富的高手们,有没有什么good idea,望指点迷津~!!谢谢
基本上都应该继承自Form那么你可以考虑用反射来实现
每个菜单项目的tag里面保存要打开的窗体的string的完整名字 比如 XXX.UserForm.CreateUser
然后启动的时候反射取得实例
直接show
实际用的时候可能有点出入 System.Reflection.Assembly ass;
ass = System.Reflection.Assembly.GetExecutingAssembly();
Form from = (Form)ass.CreateInstance("XXX.UserForm.CreateUser ");
from.Show()做可扩展的程序经常这么干