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
|
public static class TreeViewExtensions
{
public static void ExecuteAction(this TreeView tv, Func<TreeNode, bool> condition, Action<TreeNode> action)
{
foreach (TreeNode node in tv.Nodes)
{
if (condition(node))
action(node);
else
foreach (TreeNode desc in Descendants(node).Where(condition))
action(desc);
}
}
private static IEnumerable<TreeNode> Descendants(this TreeNode current)
{
if (current.Nodes.Count > 0)
foreach (TreeNode child in current.Nodes)
{
yield return child;
foreach (TreeNode desc in Descendants(child))
yield return desc;
}
}
} |
Partager