gpt4 book ai didi

c# - 在 WinForms UserControl 构造函数中将 DesignMode 换成 LicenseManager.UsageMode 是否有任何注意事项?

转载 作者:太空狗 更新时间:2023-10-29 23:47:21 27 4
gpt4 key购买 nike

如果您有一个显示数据的表单,您可以做的一件事是在构造函数中引用 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 上发表评论的人说,使用 LicenseManagerOnPaint 方法中不起作用。

关于c# - 在 WinForms UserControl 构造函数中将 DesignMode 换成 LicenseManager.UsageMode 是否有任何注意事项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404420/

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