码迷,mamicode.com
首页 > Windows程序 > 详细

使用反射来管理子程序的主窗体

时间:2015-01-30 15:28:11      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

 目标:在主程序运行时打开子程序,并在主程序中根据一些逻辑来适时地隐藏和显示子程序的主窗体。

 

  最初的想法是使用启动进程的方式,但是这样要用到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);
        }

  感觉没有什么新鲜的,算是对反射的一个使用示例。这个类封装的不太好,希望多提宝贵意见。

 

 

使用反射来管理子程序的主窗体

标签:

原文地址:http://www.cnblogs.com/ddx-deng/p/4262214.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!