我有一个ComboBox(Windows Forms),它绑定了一个列表。它是在设计时创建的。当列表内容更改时,我的代码调用一个函数来刷新数据绑定。这对于.NET 3.5来说很好用:
BindingData.SuspendBinding();
DataSource = null;
DataSource = BindingData;
BindingData.ResumeBinding();
我已经切换到.NET 4.0,但它停止工作了。具体来说,在执行此代码后,VS调试器显示BindingData.DataSource引用了一个包含127个项目的列表,但ComboBox项属性却不包含任何项目。
可以参考类似主题的这个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;
感谢,安迪。