自动代码生成 C# 用户控件
本文关键字:用户 控件 代码生成 | 更新日期: 2023-09-27 17:56:06
我用 C# 为 DriveComboBox 编写了一个新组件(它继承自 ImageComboBox - 在互联网上找到的组件),请参阅代码示例:
public class DriveComboBox : ImageComboBox.ImageComboBox
{
public DriveComboBox()
: base()
{
foreach (ImageComboBoxItem item in allImageComboBoxItems)
{
this.Items.Add(item);
}
}
}
此部分代码将驱动器添加到控件中,在此控件拖动到窗体中后,项将添加到窗体代码的设计器中。问题是,一旦程序运行,上面的代码就会添加项,然后设计器代码再次添加它们,因此我们最终得到双项。
问题是添加项的位置应该在控件中的位置,或者如何防止设计器再次添加它们?
我遇到了同样的问题,似乎Visual Studio的"Visual ??"设计器可以使用运行时代码作为设计时代码。我不完全了解发生了什么,但我确实设法避免了这种方法的问题:
protected bool IsInDesignMode
{
get { return DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime; }
}
我像这样使用:
public DriveComboBox()
: base()
{
if (IsInDesignMode == false)
{
foreach (ImageComboBoxItem item in allImageComboBoxItems)
{
this.Items.Add(item);
}
}
}