Dan*_* Jo 1 c# data-binding listbox list winforms
我希望ListBox当我删除或添加一个对象到我用作其的列表时自动显示更改DataSource。
如何将 a 连接List<T>到 aListBox并立即查看底层列表的更改ListBox?
在 中Windows Forms,如果您希望在绑定列表控件中看到数据源的更改,例如ComboBox、ListBox或DataGridView (复杂的双向数据绑定),则应该使用实现数据绑定IBindingList接口DataSource的类。最合适的实现是BindingList<T>. 这样,控件的基础数据源中的每个添加/删除都将立即在控件中可见。
请记住,使用BindingList<T>允许绑定控件查看添加或删除的项目,但要立即查看属性更改,T应实现INotifyPropertyChanged. 这样您的控件将收到通知PropertyChanged并始终显示最新数据。
注1 - ObservableCollection 是否解决了双向数据绑定问题?
在 Windows 窗体中,一个常见的错误是使用ObservableCollectionthat 无法满足此要求,因为它没有实现IBindingList.
注 2 - BindingSource 是否解决了双向数据绑定问题?
如果底层数据源BindingSource没有实现,IBindingList<T>它就不能解决双向数据绑定问题。您需要通知控件从绑定源重新加载数据,以便您可以调用ResetBindings的方法BindingSource。这样,绑定控件将从数据源重新加载数据并显示最新数据:
this.bindingSource1.ResetBindings(false);
Run Code Online (Sandbox Code Playgroud)
注 3 - 我应该使用List<T>. 我该如何解决问题List<T>?
如果您必须使用List<T>,那么您可以在需要时重置列表框的数据绑定,例如在每次更改后,您应该将其分配DataSource为 null 并再次分配给数据列表:
this.listBox1.DataSource = null;
this.listBox1.DataSource = list;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2460 次 |
| 最近记录: |