【发布时间】:2011-04-13 08:12:44
【问题描述】:
我有一个绑定到列表的组合框(Windows 窗体)。它是在设计时创建的。当列表内容更改时,我的代码调用一个函数来刷新数据绑定。 这适用于 .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;
谢谢,安迪
【问题讨论】:
-
这似乎是 Windows.Forms... 删除列表标签以支持 winforms 标签。
-
如果你注释掉 Suspen/ResumeLayout 怎么办?
-
无变化 - 列表仍为空。
标签: c# winforms visual-studio-2010 combobox .net-4.0