public IEnumerable<NodeControl> GetAllChildNodeControls()
{
var output = new List<NodeControl>();
var nodeToLoop = ChildNodes;
var list = new List<NodeControl>();
while (nodeToLoop.Count > 0)
{
list.Clear();
foreach (var nodeControl in nodeToLoop)
{
if (!output.Contains(nodeControl))
{
output.Add(nodeControl);
if (nodeControl.ChildNodes.Count > 0)
{
foreach (var child in nodeControl.ChildNodes)
{
if (!output.Contains(child))
{
list.Add(child);
}
}
}
}
}
nodeToLoop = list.ToList();
}
if (output.Contains(this))
{
output.Remove(this);
}
return output.Distinct();
}