我正在尝试从ObjectListView组件中搜索和过滤TreeListView对象上的结果。目前,我正在将其实现为具有以下类
的C#(.NET 4.0)项目MyAbstract,MyDir(继承MyAbstract)和MyFile(也继承MyAbstract)。这些类具有以下属性:名称,标题,速度,SpeedType。
我想知道如何正确地为此列表创建类似查询的过滤器,例如:
Speed < 10 OR SpeedType == "RPM"
我可能会使用LINQ,但我的主要问题是如何使用TreeListView应用和管理它。我的主要问题是:
如何在TreeListView上创建这种过滤?
如何使TreeListView仅显示已过滤的结果
如何保存原始列表以清除过滤器按钮。
这就是我目前设置列表的方式:
public void Init()
{
Project.LoadDirectory();
treeListView1.SetObjects(new object[] { Project.Root });
treeListView1.CanExpandGetter = delegate(object x)
{
return (x is MyDir);
};
treeListView1.ChildrenGetter = delegate(object x)
{
return ((MyDir)x).Nodes;
};
olvColumn1.ImageGetter = new ImageGetterDelegate(this.TreeViewImageGetter);
}
我看了the documentation,但我仍不清楚。
答案 0 :(得分:3)
你有什么尝试?
这会过滤TreeListView
只显示符合您在问题中提供的条件的MyFile
个对象:
this.treeListView.ModelFilter = new ModelFilter(delegate(object x) {
var myFile = x as MyFile;
return x != null && (myFile.Speed < 10 || myFile.SpeedType == "RPM");
});
要停止过滤,只需再次清除该文件:
this.treeListView.ModelFilter = null;
项目附带的演示显示了所有这些行为。