我在WinForms中有一个自定义的ComboBox,它应该显示一个枚举。基本上,我从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;
}
}
正如您在代码中看到的那样,在构造函数中,项目被添加到ONCE但它们被列出两次。我在这里做错了什么?
答案 0 :(得分:1)
而不是在构造函数中使其正常运行的方式是将构造函数留空并将插入代码移动到OnCreate方法:
protected override void OnCreateControl()
{
if (!DesignMode) {
foreach (MyEnum p in Enum.GetValues(typeof(MyEnum))) {
Items.Add(p);
}
SelectedIndex = 0;
}
}