【发布时间】:2018-01-30 01:03:12
【问题描述】:
我在 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;
}
}
正如您在代码中看到的,在构造函数中,项目被添加一次,但它们被列出两次。我在这里做错了什么?
【问题讨论】:
-
在
base.Items.Add(p);行添加断点并调试您的代码以查看每个项目添加了多少次。例如。如果您的代码暂停了 3 次,并且您有 3 个项目要添加,那么每个项目都添加了一次。 -
我确实放了一个 Console.WriteLine,它显示了每个添加一次的项目。最后,我还输出了 Items.Count,它的数量是正确的(2 而不是 4)。
-
在运行程序之前,表单设计器中的
ComboBox' 项目列表是否为空?