我有一个绑定(bind)到列表的组合框(Windows 窗体)。它是在设计时创建的。当列表内容更改时,我的代码调用一个函数来刷新数据绑定(bind)。 这适用于 .NET 3.5:
BindingData.SuspendBinding();
DataSource = null;
DataSource = BindingData;
BindingData.ResumeBinding();
我已切换到 .NET 4.0,但它已停止工作。具体来说,在单步执行此代码后,VS 调试器显示 BindingData.DataSource 引用一个包含 127 个项目的列表,但 ComboBox Items 属性包含零个项目。
请参阅类似主题的 SO 问题:ComboBox Items Count Doesn't Match DataSource .
我已经尝试了所有我能想到的。目前我的代码如下所示,但仍然无法正常工作:
BindingData.SuspendBinding();
DataSource = null;
DataSource = BindingData;
BindingData.ResumeBinding();
BindingContext Dummy = this.BindingContext;
Invalidate();
PerformLayout();
我尝试从 List 切换到 BindingList,但没有帮助。我不得不违背自己的意愿从 .NET 3.5 切换到 .NET 4.0,所以这非常令人沮丧。我确定有一个特定的顺序有效。有什么想法吗?
这就是我将数据源附加到 ComboBox 的方式:
private BindingSource BindingData = new BindingSource();
BindingData.DataSource = Nodes;
DataSource = BindingData;
谢谢,安迪
最佳答案
我解决了。我想在某些时候我做了一个我认为是小的改变,但实际上不是。此代码已从显示 ComboBox 时调用移至创建时调用。它还没有句柄,因此无法刷新数据绑定(bind)。
我在 ComboBox.HandleCreated 事件中再次添加了数据绑定(bind)的刷新,它起作用了。
谢谢,安迪
关于c# - 刷新 C# 和 .NET 4.0 中的 ComboBox 数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3729011/