重新加载列表框内容

时间:2013-03-15 06:12:22

标签: c# listbox reload

当我看到这篇文章Here时。

但是在我的代码中,我没有看到任何DataBind()方法。

lstBox.DataBind();

如何在C#.Net中重新加载listbox

Refresh()方法也不起作用。

2 个答案:

答案 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;