MDI窗口最大化问题

今天翻了一些旧资料突然找到个文件名为窗口最大化的文档,打开看了一下发现里面竟然只有代码而没有主要说明,十分郁闷,便将这断代码来测验一下。发现原来是我以前写代码时犯得错误,希望对刚接触编程的朋友有些帮助。

在使用MDI模式的时候打开一个窗口时,我们都会新建一个窗口

代码如下:

Form2 form2 = new Form2();
form2.MdiParent = this;
form2.Show();

但是大家有没有想过,当我们重复的打开同一个窗体时会发生一些我们不想要的事,就是同一个窗体打开了N多个,造成了资源的浪费,嘿嘿,当然这就是我以前刚开始编程时所犯得错误了。

现提供以下一种解决方案,主要思路就是当打开一个窗体时检测主窗体中的MDIChildren是否包含同类型的窗口,有的话就将那个窗体显示出来,否则再新建一个窗体。

代码如下:

 public System.Windows.Forms.Form GetOneFormInstance(Type typicalForm)
        {
            ///one instance only
            bool hasOneInstance = false;
            System.Windows.Forms.Form instanceForm = null;

            //检测目标窗体是否已打开,若已打开则将其最大化显示
            foreach (Form form in this.MdiChildren)
            {
                if (form.GetType() == typicalForm)
                {
                    instanceForm = form;
                    instanceForm.Activate();
                    hasOneInstance = true;
                }
            }
            //如果目标窗体目前没有打开则新建一个目标窗体
            if (!hasOneInstance)
            {
                instanceForm = (System.Windows.Forms.Form)Activator.CreateInstance(typicalForm);
                instanceForm.MdiParent = this;
                instanceForm.Show();
                instanceForm.WindowState = FormWindowState.Maximized;
            }
            return instanceForm;
        }

方法很简单,如果这是做在一个小程序里的话其实这两种方法体现出来的差别不大,但是我想说明的是一个细节问题,这些细节可以帮我们提高不错的效率,作为一个后台代码编写者,我们能让顾客感觉到的就是我们这个程序运行速度额快慢,所以效率问题也就显了重要了,考虑细节也就成了我们提高程序效率的一种途径。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值