代码之家  ›  专栏  ›  技术社区  ›  Brandon

在详细的ListView中管理ListView项的最佳方法?

  •  1
  • Brandon  · 技术社区  · 15 年前

    我采用了以下模式 将ListView项放入具有多列的ListView中 (当我想显示 MyObject 类型),我只是想看看这是否是完成这项任务的最佳方法,或者是否有更有效和可读的代码:

    1. 创建继承的 ListViewItem 需要 我的对象 构造函数中的对象-我将调用此 MyObjectListViewItem -A Refresh() 方法清除并重新填充ListViewItem子项。
    2. 用我的新myObjectListViewItem项填充ListView。

    例子:

    public MyObject MyObject { get; set; }
    public MyObjectListViewItem(MyObject myObj)
    {
        MyObject = myObj;
        this.Refresh();
    }
    
    public void Refresh()
    {
        this.SubItems.Clear();
        this.Text = myObj.FirstColumnProperty;
        this.SubItems.Add(myObj.SecondColumnProperty); // etc...
    }
    

    建议?更好的方法?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Rex M    15 年前

    你考虑过使用 BindingSource 或者创建自己的实现IBindingListView的工具?这使得人们对数据及其状态的关注一直局限于数据本身,而不是任何使用它的控件。由于.NET控件已经构建为与bindingsources一起使用,因此您可以利用一些更健壮的功能。控件不是显式调用屏幕刷新,它只是负责响应绑定源引发的事件,并负责通知控件是否准备好刷新而不强制刷新的控制器。

        2
  •  -1
  •   Grammarian    15 年前

    制作知道如何构建自己的ListViewItem是一个好主意。

    如果您稍微扩展一下这个想法,您可以让列知道如何构建每个子项,这也允许它们自动对ListView排序,支持分组和复制/拖放行。这只是一些 ObjectListView 为你效劳。

    ObjectListView是一个围绕.NET WinForms ListView控件的开放源代码包装器,它使ListView更易于使用,还添加了一些非常好的新功能,并克服了一些恼人的错误/限制。

    Simple ObjectListView in action http://i38.tinypic.com/29zwu1d.jpg

    如果你真的喜欢@rex使用 BindingSource ,ObjectListView项目还提供数据感知 DataListView 它是数据可绑定的。