c# - 刷新 C# 和 .NET 4.0 中的 ComboBox 数据绑定(bind)

标签 c# winforms visual-studio-2010 combobox .net-4.0

我有一个绑定(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/

相关文章:

c# - Entity Framework 相关子查询

c# - 在 ICSharpCode 文本编辑器中选择文本

c# - 检测二维码然后旋转文档

c# - 'CsGL.OSLib' 抛出异常

c# - VS 2010 - 使用设计器打开用户控件/表单时出错

.net - 重命名Visual Studio解决方案配置?

c# - 当 Main 抛出异常时,Environment.ExitCode 不受尊重。如何返回非零退出代码并抛出异常?

c# - 使用 DryIoc 解决多个注册之一

c# - 在 ItemCheck 事件后清除 CheckedListBox

c# - 改变我的命名空间是一件好事还是必要的?