修改原始数据源不会更新 ComboBox

ero*_*las 4 c# winforms

我有ComboBox一个DataSource设置为应用程序设置如下

public DetailsForm()
{
    InitializeComponent();
    this.comboBox1.DataSource = TextSelectionSettings.Default.categories;
}
Run Code Online (Sandbox Code Playgroud)

但我希望用户在运行时需要时向组合框中添加额外的项目。所以我只是在文本框上做了一个简单的点击事件来测试向列表中添加一个新字符串。

private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
    TextSelectionSettings.Default.categories.Add("test");
    TextSelectionSettings.Default.Save();
}
Run Code Online (Sandbox Code Playgroud)

但是ComboBox没有显示我添加到设置中的新字符串。

如何刷新ComboBox以显示设置中的更改?

  • Refresh() 组合框上的功能不起作用。
  • DataSource再次设置也不起作用。
  • 我无法将Item直接添加到ComboBoxusingItems.Add()方法中,因为DataSource已设置。

Ron*_*yer 5

为了使 Windows 窗体(和 WPF)中的数据绑定起作用,它必须具有某种更改通知,例如IBindingListINotifyCollectionChanged能够注意到更改。

  • 调用Refresh()只是为了绘画,不会刷新绑定
  • 将 设置.DataSource为相同的内容将不起作用(您没有更改任何内容,因此它不会将其视为更改)

解决方法是将 设置.DataSourcenull,然后再次将其设置回集合。这会导致它重新评估绑定(因为它与当前的对象不同null)并重置您的值。