我正在以编程方式创建一个组合框,如下所示:
var cbo = new ComboBox();
cbo.HandleCreated += (s, e) =>
{
cbo.DataSource = mylist;
};
当我执行上述操作时,组合框显示列表中包含的项目的两倍。但是,当我执行以下操作时,组合框会显示正确数量的项目:
var cbo = new ComboBox() {
DataSource = mylist
};
为什么会这样?
最佳答案
这段代码复制了记录,因为在您初始化组合框时,它会触发事件 HandleCreated,这会将您的列表添加到组合框。然后在完成初始化后,代码的执行将再次触发事件 HandleCreated,因为执行该事件的第一个代码来自初始化,第二个代码来自运行时执行本身。
var cbo = new ComboBox(); //initialization
//below this comment is the event
cbo.HandleCreated += (s, e) =>
{
cbo.DataSource = mylist;
};
附言
在 C# WinForms 中填充组合框有更好的方法;每个控件(组合框、文本框等)都有不同的事件。您可以先检查一下,而不是创建您的事件。
关于c# - 为什么组合框在创建时会加倍其项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53927091/