当我看到这篇文章Here时。
但是在我的代码中,我没有看到任何DataBind()
方法。
lstBox.DataBind();
如何在C#.Net中重新加载listbox
Refresh()
方法也不起作用。
答案 0 :(得分:4)
您可以尝试使用ObservableCollection作为ItemSsource,并且所有操作都会自动完成。然后,您的任务是将项目填充到ObservableCollection中,无需手动更新。
答案 1 :(得分:2)
DataBind()用于ASP.NET控件 - 据我所知,Windows窗体控件没有等效的方法。 Listbox的数据源是什么?我记得有一段时间有类似的问题,我通过将我的控件绑定到BindingSource对象而不是我正在使用的任何东西来解决我的问题。同样,将Listbox绑定到BindingSource而不是当前的数据源可能会对您有所帮助。来自MSDN:
BindingSource组件有很多用途。首先,它通过在Windows窗体控件和数据源之间提供货币管理,更改通知和其他服务,简化了表单上对数据的绑定控制。
换句话说,一旦你对BindingSource进行了更改(例如调用BindingSource.Add,或者将BindingSource的DataSource属性设置为另一个集合),ListBox将自动更新,而无需调用“DataBind()”类似方法。
如果列表框当前绑定到集合对象,则可以简单地将集合绑定到BindingSource,然后将控件绑定到BindingSource:
BindingSource.DataSource = ListboxItems;
ListBox.DataSource = BindingSource;
或者,您可以手动构建BindingSource的内容:
MyBindingSource.Clear();
MyBindingSource.Add(new BusinessObject("Bill", "Clinton", 1946));
MyBindingSource.Add(new BusinessObject("George", "Bush", 1946));
MyBindingSource.Add(new BusinessObject("Barack", "Obama", 1961));
lstBox.DataSource = MyBindingSource;