Guest User

Untitled

a guest
Jun 14th, 2012
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. How to remove all but checked nodes and their parents in a treeview?
  2. private void RecursiveCheckNodesDown(TreeNodeCollection tree, bool checkedFlag)
  3. {
  4. if (tree != null)
  5. foreach (TreeNode node in tree)
  6. RecursiveCheckNodesDown(node.Nodes, node.Checked = checkedFlag);
  7. }
  8.  
  9. private void RecursiveCheckNodesUp(TreeNode node, bool checkedFlag)
  10. {
  11. if( node != null )
  12. RecursiveCheckNodesUp(node.Parent, node.Checked = checkedFlag);
  13. }
  14.  
  15. private void SomeTreeBeginUpdate()
  16. {
  17. SomeTree.BeginUpdate();
  18. SomeTree.AfterCheck -= SomeTree_AfterCheck;
  19. }
  20.  
  21. private void SomeTreeEndUpdate()
  22. {
  23. SomeTree.AfterCheck += SomeTree_AfterCheck;
  24. SomeTree.EndUpdate();
  25. }
  26.  
  27. private void SomeTree_AfterCheck(object sender, TreeViewEventArgs e)
  28. {
  29. SomeTreeBeginUpdate();
  30. RecursiveCheckNodesDown(e.Node.Nodes, e.Node.Checked);
  31. if( e.Node.Checked )
  32. RecursiveCheckNodesUp(e.Node.Parent, e.Node.Checked);
  33. SomeTreeEndUpdate();
  34. }
  35.  
  36. this.SomeTree.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.SomeTree_AfterCheck);
  37.  
  38. //pseudocode
  39. bool prune(treenode t)
  40. {
  41. bool mayNotDeleteThisNode=t.isChecked;
  42. foreach(treenode c in t.childnodes)
  43. {
  44. if(prune(c)) mayNotDeleteThisNode=true;
  45. }
  46.  
  47. if(!mayNotDeleteThisNode)
  48. {
  49. delete(t)
  50. }
  51.  
  52. return mayNotDeleteThisNode;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment