自动代码生成 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);                
        }
    }
}
此部分代码将驱动器添加到控件中,在此控件拖动到窗体中

后,项将添加到窗体代码的设计器中。问题是,一旦程序运行,上面的代码就会添加项,然后设计器代码再次添加它们,因此我们最终得到双项。

问题是添加项的位置应该在控件中的位置,或者如何防止设计器再次添加它们?

自动代码生成 C# 用户控件

我遇到了同样的问题,似乎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);                
        }
    }
}