none
listbox绑定后的更新问题 RRS feed

  • 问题

  • 我将listbox的datasource属性设置为泛型list对象,list里的是我自定义的对象,含有path和name属性,listbox控件的valuemembrt和displaymember分别设置为path和name,绑定后当我对list对象进行删除等操作时,listbox中显示的项为什么不会同步更新.
    2009年12月17日 13:07

答案

  • 你好!
         是的,如果你不重新绑定,不会自动更新的!
         为了实现自动更新,需要使用BindingSource类来封装数据源,然后ListBox再绑定BindingSource实例,具体可以参考:
    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.bindingsource.aspx
    周雪峰
    2009年12月17日 15:36
    版主
  • 我不太清楚你的代码是怎么处理的。但你更新完 List 对象后,再调用下面的方式界面肯定是会刷新的。

    BindingSource.ResetItem(int itemIndex);
    BindingSource.ResetCurrentItem();



    BindingSource.ResetBindings(true);

    知识改变命运,奋斗成就人生!
    • 已标记为答案 YiChun Chen 2009年12月21日 11:08
    2009年12月18日 3:16
    版主

全部回复

  • 你好!
         是的,如果你不重新绑定,不会自动更新的!
         为了实现自动更新,需要使用BindingSource类来封装数据源,然后ListBox再绑定BindingSource实例,具体可以参考:
    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.bindingsource.aspx
    周雪峰
    2009年12月17日 15:36
    版主
  • 那为什么如果绑定到datatable时为什么listbox中的值会自动更新.
    2009年12月17日 23:20
  • 那为什么如果绑定到datatable时为什么listbox中的值会自动更新.
    DataTable 表示一个内存内关系数据的表
    数据对于所处的基于 .NET 的应用程序来说是本地数据
    If (My Answer) Please mark the replies as answer. Thanks; Else Thank you all the same;
    2009年12月18日 1:22
  • 数据操作完毕后,显式Bind一下
    http://bbs.lishewen.com.cn
    2009年12月18日 1:29
  • 绑定 DataTable 有些情况下也不能自动更新,微软推荐使用 BindingSource 进行控件的绑定。
    知识改变命运,奋斗成就人生!
    2009年12月18日 1:56
    版主
  • 我将bindingsource的datasource设置为要绑定的list对象,再把bindingsource绑定到listbox,这时我修改bindingsource中的值会显示到listbox中,但如果修改list中的值还是不能显示到listbox中啊。
    另外当我完成对list对象中数据的更新后如果直接再把这个对象赋值给listbox的datasource属性是无效的,如果先把datasource先设为nothing后赋值就能更新了,这是为什么?
    2009年12月18日 2:14
  • 我不太清楚你的代码是怎么处理的。但你更新完 List 对象后,再调用下面的方式界面肯定是会刷新的。

    BindingSource.ResetItem(int itemIndex);
    BindingSource.ResetCurrentItem();



    BindingSource.ResetBindings(true);

    知识改变命运,奋斗成就人生!
    • 已标记为答案 YiChun Chen 2009年12月21日 11:08
    2009年12月18日 3:16
    版主
  • 感谢,问题解决了,是我以前不知道ResetBindings这个方法。谢谢各位的热心帮助。
    2009年12月18日 4:13