自动代码生成 C# 用户控件
Automatic Code Generation C# User Control
我用 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);
}
}
}
我用 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);
}
}
}