-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTreeViewExtensions.cs
55 lines (48 loc) · 1.47 KB
/
TreeViewExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace OSTandPSTParser
{
public static class TreeViewExtensions
{
public static IEnumerable<TreeNode> Descendants(this TreeNodeCollection TreeNodes)
{
foreach (TreeNode node in TreeNodes.OfType<TreeNode>())
{
yield return node;
foreach (var child in node.Nodes.Descendants())
{
yield return child;
}
}
}
public static List<TreeNode> GetAllCheckedNodes(this TreeView treeview)
{
return treeview.Nodes.Descendants()
.Where(n => n.Checked)
.ToList();
}
public static List<String> GetNamesPath(this TreeNode node) {
List<String> temp = new List<string>(5);
do
{
temp.Add(node.Name);
node = node.Parent;
} while (node != null);
temp.Reverse();
return temp;
}
public static void CheckAllChildNodes(this TreeNode treeNode, bool nodeChecked)
{
foreach (TreeNode node in treeNode.Nodes)
{
node.Checked = nodeChecked;
if (node.Nodes.Count > 0)
node.CheckAllChildNodes(nodeChecked);
}
}
}
}