gpt4 book ai didi

c# - 子控件中的 `DesignMode` 设置不正确?

转载 作者:可可西里 更新时间:2023-11-01 08:38:21 24 4
gpt4 key购买 nike

我有一个包含嵌套控件的复合控件。我面临的问题是控制从全局设置类读取属性,该类是静态的,实习生从设置文件中读取。为了阻止单个控件在设计模式下访问配置,我在每个控件中添加了检查。

If(!DesignMode){
...
//Initialize properties e.g. prop = AppConfig.GetProperty("prop1");
}

问题是在 VS 中打开时单个控件工作正常。但是当我打开包含嵌套控件的顶级控件时,VS 设计器出现错误。错误是由于某种原因在嵌套控件 DesignMode=false 中。

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

我什至不知道如何调试它。现在我注释掉属性初始化代码并构建它,然后打开设计器并在那里取消注释并再次构建它以运行它。

有没有人遇到过这个问题,或者有什么办法可以解决。

最佳答案

您面临的问题是在构造函数(在任何级别)中未设置设计模式。

将您的初始化方法移至 Load 事件,以避免此问题。

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

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

这肯定会提供一种准确的方法来确定设计模式,因为有时 VisualStudio当您在表单上放置用户控件或在设计中刷新表单显示本身时,返回 DesignMode = false。

关于c# - 子控件中的 `DesignMode` 设置不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4498478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com