自动代码生成 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);                
        }
    }
}