如何过滤objectlistview的TreeListView?

时间:2013-03-18 07:59:25

标签: c# .net winforms objectlistview

我尝试使用文档中的委托来过滤TreeListViewFiltering ObjectListView

所以它是这样的:

this.myTree.ModelFilter = new ModelFilter(delegate(object x) {
    return (((MyTreeNode)x).Type == type); // this code doesn't work, why ?
});

结果,myTree应该包括.Type属性等于type的所有节点,在我的情况下树中没有节点,为什么???。

但是,如果我将.Type属性设置为根节点的类型,那么它将只是树中的一个根节点,因此在这种情况下它可以工作。

ETA:为什么使用上面的代码进行过滤不起作用?

1 个答案:

答案 0 :(得分:2)

从您的问题来看,您的TreeListView结构看起来并不完全清楚。但它可能与您想要过滤尚未获取的子项目(未展开节点)这一事实有关吗?

从您已经引用的教程链接:

  

过滤和TreeListViews
  过滤和TreeListViews以可预测但可能意想不到的方式进行交互   过滤仅考虑当前公开的行(即,它们的所有祖先都被扩展)   在这些行中,如果过滤包含行或者任何后代,则过滤过程将包括行。 (是的,这是递归的)。如果底层子项符合过滤条件,则其所有祖先也将被视为已匹配,因此将显示在控件中。
  在大多数情况下,这提供了最可预测和最有用的视觉效果。