加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – “DesignMode”在子控件中设置不正确?

发布时间:2020-12-15 03:53:46 所属栏目:百科 来源:网络整理
导读:我有一个复合控件包含嵌套控件.我所面临的问题是控件从全局设置类读取属性,该属性是静态的,实习从设置文件中读取.为了阻止个人控制在设计模式下访问配置,我添加了对每个控件的检查. If(!DesignMode){ ... //Initialize properties e.g. prop = AppConfig.Get
我有一个复合控件包含嵌套控件.我所面临的问题是控件从全局设置类读取属性,该属性是静态的,实习从设置文件中读取.为了阻止个人控制在设计模式下访问配置,我添加了对每个控件的检查.
If(!DesignMode){
    ...
    //Initialize properties e.g. prop = AppConfig.GetProperty("prop1");
}

问题是个人控制在VS中打开时工作正常.但是当我打开包含嵌套控件的顶级控件时,我会得到VS设计器的错误.错误是在嵌套控件DesignMode = false由于某些原因.

我还创建了一个测试应用程序,并在另一个控件中创建了一个简单的控件来测试VS是否存在问题,但是对于任何深度的控件,它似乎都能正常工作.

我甚至不知道如何调试这个.现在我注释掉属性初始化代码并构建它,然后打开设计器并在其中取消注释,并再次构建它来运行它.

有没有人遇到这个问题或有什么办法来解决它.

解决方法

您所面临的问题是在构造函数(在任何级别)都没有设置DesignMode.

将初始化方法移动到Load事件,以避免此问题.

此外,您可以添加额外的比较:

protected bool IsInDesignMode
 {
    get
    {
        return DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime;
    }
 }

这肯定会提供一种确定设计模式的绝妙方式,因为有时VisualStudio在将用户控件放在表单上时返回DesignMode = false,或者在设计中刷新表单显示本身.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读