首页 > 代码库 > 使用反射来管理子程序的主窗体
使用反射来管理子程序的主窗体
目标:在主程序运行时打开子程序,并在主程序中根据一些逻辑来适时地隐藏和显示子程序的主窗体。
最初的想法是使用启动进程的方式,但是这样要用到Win32的一些个API,还要找窗体什么的,另外操作进程占用资源也会多,所以主动放弃这个想法。于是想到使用反射来完成这个过程。
string path;//程序集路径 object myo; string typeForm;//窗体类型,是Form1或者Form2 public ChildMsg(string pathAss, string typeForm) { this.path = pathAss; this.typeForm = typeForm; } //初始化 private bool InitIt() { try { if (myo == null) { Assembly mainAss = Assembly.LoadFrom(path); myo = mainAss.CreateInstance(typeForm); return true; } } catch { return false; } return false; } //打开方法 public void OpenIt() { if (InitIt()) { MethodInfo mi = myo.GetType().GetMethod("Show", new Type[] { }); mi.Invoke(myo, null); } } //显示与隐藏 public void Show(bool yes) { PropertyInfo pi = myo.GetType().GetProperty("Visible"); pi.SetValue(myo, yes, null); } //关闭 public void CloseIt() { MethodInfo mi = myo.GetType().GetMethod("Close", new Type[] { }); mi.Invoke(myo, null); }
感觉没有什么新鲜的,算是对反射的一个使用示例。这个类封装的不太好,希望多提宝贵意见。
使用反射来管理子程序的主窗体
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。