0

我尝试TreeListView使用文档中的代表进行过滤:Filtering 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:为什么用上面的代码过滤不起作用?

4

1 回答 1

2

从您的问题来看,您的结构是什么样的并不完全清楚TreeListView。但这可能与您要过滤尚未获取的子项(未扩展的节点)这一事实有关?

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

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

于 2013-03-25T08:26:15.640 回答