C# 当数据源值更改时,WinForms组合框中的项不更新

C# 当数据源值更改时,WinForms组合框中的项不更新,c#,winforms,combobox,C#,Winforms,Combobox,我有一个通过数据源绑定到列表的组合框。由于某些原因,当数据源项发生更改时,组合框中的项似乎不会自动更新。我可以在调试器中看到数据源包含正确的项 关于StackOverflow,有很多答案,但大多数都没有答案,对我来说不起作用,或者需要从使用列表更改为BindingList,而我不能这样做,因为使用BindingList没有方法的代码太多了 肯定有一种简单的方法告诉组合框刷新它的项目吗?我不敢相信这不存在。我已经有一个事件在需要更新组合时触发,但是我更新值的代码没有效果 组合声明: thi

我有一个通过数据源绑定到列表的组合框。由于某些原因,当数据源项发生更改时,组合框中的项似乎不会自动更新。我可以在调试器中看到数据源包含正确的项

关于StackOverflow,有很多答案,但大多数都没有答案,对我来说不起作用,或者需要从使用列表更改为BindingList,而我不能这样做,因为使用BindingList没有方法的代码太多了

肯定有一种简单的方法告诉组合框刷新它的项目吗?我不敢相信这不存在。我已经有一个事件在需要更新组合时触发,但是我更新值的代码没有效果

组合声明:

    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,然后重新添加它。但这可能会导致任何选定的值变得未设置,这与使用绑定列表时的工作方式不同。谢谢-但我的问题是两年前的:)您的问题没有答案,其他人可以从您的问题中找到帮助。