c# - 为什么组合框在创建时会加倍其项目?
问题描述
我正在以编程方式创建一个组合框,如下所示:
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 中填充组合框有更好的方法;每个控件(组合框、文本框等)都有其不同的事件。您可以先检查一下,而不是创建您的活动。
推荐阅读
- python - 无法删除表中的列
- testing - 运行 `cargo test --workspace` 并排除一项测试
- javascript - Dhtmlx 日历时间表
- javascript - TypeError: require(...).listen 不是函数 ERROR
- javascript - 如何将我的应用程序中的变量加载到 package.json 中?
- java - 不兼容的类型:int[] 不能转换为 int。我该怎么办?
- r - 如何编写一个 for 循环在 R 中创建多个新变量?
- c# - 为什么ui文本中的值闪烁,我怎样才能让它不闪烁?
- assembly - 在 LC3 中连接 3 个字符串
- django - Django 和 S3 Bucket aws Admin 静态文件