winform treeview 节点过滤
项目中有一个已经绑定好的treeview ,需求是,根据过滤条件A,把不满足条件A的节点过滤掉,如果节点不满足条件,但叶子节点满足条件,该节点保留,节点不满足条件,该节点下的叶子节点也不满足条件,该节点和叶子节点都过滤掉。
算法是:到序遍历每一个树节点(先遍历叶子节点),如果节点是叶子节点,检查条件,不满足移除。
关键代码:
1 /// <summary> 2 /// 移除叶子节点 3 /// </summary> 4 /// <returns></returns> 5 private void RemoveNode(TreeNode tn) 6 { 7 for (int i = tn.Nodes.Count - 1; i >= 0; i--) 8 { 9 RemoveNode(tn.Nodes[i]); 10 } 11 Task t = tn.Tag as Task; 12 if (!this.FilderCondition(t)&&tn.Nodes.Count==0) 13 { 14 tn.Remove(); 15 } 16 }
遍历树节点:
private void button1_Click(object sender, EventArgs e) { for (int i = treeView1.Nodes.Count - 1; i >= 0; i--) { RemoveNode(treeView1.Nodes[i]); } }
作者:逐帆
出处:http://www.cnblogs.com/langhua/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。