我有一个ComboBox
,DataSource
设置为应用程序设置,如下所示
public DetailsForm()
{
InitializeComponent();
this.comboBox1.DataSource = TextSelectionSettings.Default.categories;
}
但我希望用户在运行时需要在组合框中添加额外的项目。所以我只是在文本框上做了一个简单的点击事件,以测试在列表中添加一个新字符串。
private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
TextSelectionSettings.Default.categories.Add("test");
TextSelectionSettings.Default.Save();
}
但ComboBox
未显示我添加到设置中的新字符串。
如何刷新ComboBox
以显示设置中的更改?
Refresh()
功能无效。DataSource
也不起作用。Item
方法将ComboBox
直接添加到Items.Add()
,因为设置了DataSource
。 答案 0 :(得分:3)
为了使Windows窗体(和WPF)中的数据绑定能够正常工作,它必须具有某种变更通知,例如IBindingList
或INotifyCollectionChanged
才能注意到这些变化。
Refresh()
仅用于绘画,不会刷新绑定.DataSource
设置为相同的内容无法正常工作(您不会更改任何内容,因此它不会将其视为更改)解决方法是将.DataSource
设置为null
,然后再将其设置回集合。这会导致它重新评估绑定(因为它是与当前null
不同的对象)并重置您的值。