C# 当数据源值更改时,WinForms组合框中的项不更新
我有一个通过数据源绑定到列表的组合框。由于某些原因,当数据源项发生更改时,组合框中的项似乎不会自动更新。我可以在调试器中看到数据源包含正确的项 关于StackOverflow,有很多答案,但大多数都没有答案,对我来说不起作用,或者需要从使用列表更改为BindingList,而我不能这样做,因为使用BindingList没有方法的代码太多了 肯定有一种简单的方法告诉组合框刷新它的项目吗?我不敢相信这不存在。我已经有一个事件在需要更新组合时触发,但是我更新值的代码没有效果 组合声明:C# 当数据源值更改时,WinForms组合框中的项不更新,c#,winforms,combobox,C#,Winforms,Combobox,我有一个通过数据源绑定到列表的组合框。由于某些原因,当数据源项发生更改时,组合框中的项似乎不会自动更新。我可以在调试器中看到数据源包含正确的项 关于StackOverflow,有很多答案,但大多数都没有答案,对我来说不起作用,或者需要从使用列表更改为BindingList,而我不能这样做,因为使用BindingList没有方法的代码太多了 肯定有一种简单的方法告诉组合框刷新它的项目吗?我不敢相信这不存在。我已经有一个事件在需要更新组合时触发,但是我更新值的代码没有效果 组合声明: thi
this.devicePortCombo.DataBindings.Add(
new System.Windows.Forms.Binding("SelectedValue",
this.deviceManagementModelBindingSource, "SelectedDevice", true,
DataSourceUpdateMode.OnPropertyChanged));
this.devicePortCombo.DataSource = this.availableDevicesBindingSource;
更新组合框的代码:
private void Instance_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "AvailableDevices")
{
// Rebind dropdown when available device list changes.
this.Invoke((MethodInvoker)delegate
{
devicePortCombo.DataSource = AvailableDevicesList;
devicePortCombo.DataBindings[0].ReadValue();
devicePortCombo.Refresh();
});
}
}
您没有将DataGridview的
数据源
绑定到案例中的同一个BindingSource对象this.availableDevicesBindingSource
,这是第一次绑定的。但稍后您将绑定到不同的对象可用设备列表
。同样,您正在为SelectedValue
使用另一个绑定源,即this.deviceManagementModelBindingSource
仅使用一个
BindingSource
,可能会解决您的问题如果您使用的是BindingSource,您是否尝试过BindingSource.ResetBindings()。在我遇到此问题之前,我必须将数据源设置为nothing,然后重新添加它。但这可能会导致任何选定的值变得未设置,这与使用绑定列表时的工作方式不同。谢谢-但我的问题是两年前的:)您的问题没有答案,其他人可以从您的问题中找到帮助。