- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
如果您有一个显示数据的表单,您可以做的一件事是在构造函数中引用 this.DesignMode
以避免在设计器中填充它:
public partial class SetupForm : Form
{
private SetupItemContainer container = new SetupItemContainer();
public SetupForm()
{
InitializeComponent();
if (!this.DesignMode)
{
this.bindingSource1.DataSource = this.container;
this.Fill();
}
}
}
但是,如果您决定将该表单重写为 UserControl,并保持相同的构造函数逻辑,则会发生意想不到的事情 - this.DesignMode
无论如何始终为 false。这会导致设计人员调用本应在运行时发生的逻辑。
我刚刚在一篇博文中发现了一条评论,似乎对此进行了修复,但它引用了 LicenseManager 的功能。类作为在 UserControl 中按预期工作的替代品。
所以对于 UserControl 我可以这样做:
public partial class AffiliateSetup : UserControl
{
private AffiliateItemContainer container = new AffiliateItemContainer();
public AffiliateSetup()
{
InitializeComponent();
if (LicenseManager.UsageMode == LicenseUsageMode.Runtime)
{
this.bindingSource1.DataSource = this.container;
this.Fill();
}
}
}
使用 LicenseManager
而不是 DesignMode
是否有任何警告或暗示可能会阻止我放入生产代码?
最佳答案
据在 my answer to another question 上发表评论的人说,使用 LicenseManager
在 OnPaint
方法中不起作用。
关于c# - 在 WinForms UserControl 构造函数中将 DesignMode 换成 LicenseManager.UsageMode 是否有任何注意事项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404420/
我看过很多关于 Forms 和 UserControls 的 DesignMode 属性的帖子和问题。这个想法是您要检查控件是否处于设计模式(例如,控件显示在 Visual Studio 设计器中),
如果您有一个显示数据的表单,您可以做的一件事是在构造函数中引用 this.DesignMode 以避免在设计器中填充它: public partial class SetupForm : Form {
我是一名优秀的程序员,十分优秀!