将重构进行到底(续)

 

       接上一篇博文:《将重构进行到底-主窗口管理》

    上篇博文,小菜介绍了在项目开发中一个很简单而常见的主窗口管理的代码重构例子,最终得到一个不错的解决方案,但是最近小菜发现了一处小bug,模态窗口不可设置MdiParent属性

再次重构的代码如下:并且该段代码不可放在窗体构造函数,因为Modal属性是窗口show之后被设置的,所以,以目前的情况,下面代码是最安全有效的。

        protected override void OnShown(EventArgs e)

        {

//此处需要判断窗口是否是模态打开

//模态窗口不可设置MdiParent

            if (!this.Modal)

            {

                //顶层窗口存在

                Form parent = Application.OpenForms[0];//此处OpenForms.Count总是>0

                //如果顶级窗口是MdiContainer,并且当前窗口不是MdiContainer

                if (parent.IsMdiContainer && !this.IsMdiContainer)

                {

                    this.MdiParent = parent;

                }

            }

        }

最后,一点感悟:重构是伴随开发全生命周期的,而不是阶段性的,否则代码会腐烂到无法忍受。

转载于:https://www.cnblogs.com/magiclee/archive/2008/04/22/1164798.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值