>我在WinForms中有一个自定义的组合框,它应该显示枚举。基本上,我从 ComboBox 派生,在构造函数中,我从枚举加载项目。
问题是,即使在过程结束时它说项目计数与枚举项目计数相同,可视化表示显示好像相同的项目被添加两次。换句话说,如果我的枚举有值 Value1 和 Value2,ComboBox 说它有两个值,但在下拉时它显示 Value1、Value2、Value1、Value2,就好像我添加了两次一样。
public class EnumComboBox : ComboBox
{
public EnumComboBox() : base()
{
foreach (MyEnum p in Enum.GetValues(typeof(MyEnum)) {
base.Items.Add(p);
}
SelectedIndex = 0;
}
}
正如您在代码中看到的,在构造函数中,这些项被添加一次,但它们被列出两次。我在这里做错了什么?
而不是在构造函数中,使其正常运行的方法是将构造函数留空并将插入代码移动到 OnCreate 方法:
protected override void OnCreateControl()
{
if (!DesignMode) {
foreach (MyEnum p in Enum.GetValues(typeof(MyEnum))) {
Items.Add(p);
}
SelectedIndex = 0;
}
}