DesignMode的重载 C#

也就是说一个控件只有在它自己被拖拽到设计器的时候,其 DesignMode 才是真,如果它被包含在其他控件中被加入到设计器,那么那个控件才是在设计模式,而它不是!换句话说,DesignMode 并不能反映当前环境是否是运行时,它只能告诉你,这个控件当前是不是直接被设计器操作(嵌套的已经不算了) 。

解决方法应该如何呢,就是重写下这个DesignMode的属性为我们期望的值即可,如下所示。

/// <summary>
/// 标题:获取一个值,用以指示 System.ComponentModel.Component 当前是否处于设计模式。
/// 描述:DesignMode 在 Visual Studio 产品中存在 Bug ,使用下面的方式可以解决这个问题。/// </summary>
protected new bool DesignMode
{
    get
    {
        bool returnFlag = false;
#if DEBUG
        if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime)
        {
            returnFlag = true;
        }
        else if (System.Diagnostics.Process.GetCurrentProcess().ProcessName.ToUpper().Equals("DEVENV"))
        {
            returnFlag = true;
        }
#endif
        return returnFlag;
    }
}

 

posted on 2018-09-18 21:29  武胜-阿伟  阅读(450)  评论(0编辑  收藏  举报