我有一个绑定到列表的ComboBox(Windows窗体)。它是在设计时创建的。当列表内容更改时,我的代码将调用一个函数来刷新数据绑定。 NET 3.5可以正常工作:

BindingData.SuspendBinding();
DataSource = null;
DataSource = BindingData;
BindingData.ResumeBinding();


我已切换到.NET 4.0,并且它已停止工作。具体来说,在单步执行此代码后,VS调试器显示BindingData.DataSource引用包含127个项目的列表,但ComboBox Items属性包含零个项目。

请参见类似主题的这个问题。

我已经尝试了所有我能想到的。目前,我的代码如下所示,但仍然无法正常工作:

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时被调用到创建时被移动。它还没有句柄,因此无法刷新数据绑定。

我在ComboBox.HandleCreated事件中再次添加了对数据绑定的另一次刷新,它可以正常工作。

谢谢,安迪

07-24 09:51
查看更多