in DiagManager/DiagClasses/DiagTreeMgr.cs [50:111]
private static void OnCheck(object sender, TreeViewEventArgs e)
{
e.Node.TreeView.AfterCheck -= OnCheck;
TreeNode node = e.Node;
TreeNode parentNode = e.Node.Parent;
if (parentNode != null)
{
bool AllChildNodesChecked = true;
bool AllChildNodesUnchecked = true;
bool IsAnyChildNodechecked = false;
foreach (TreeNode childNode in parentNode.Nodes)
{
if (childNode.Checked == false && AllChildNodesChecked == true)
{
AllChildNodesChecked = false;
}
if (childNode.Checked == true && IsAnyChildNodechecked == false)
{
IsAnyChildNodechecked = true;
}
if (childNode.Checked == true && AllChildNodesUnchecked == true)
{
AllChildNodesUnchecked = false;
}
}
if (AllChildNodesChecked || IsAnyChildNodechecked)
{
parentNode.Checked = true;
}
if (AllChildNodesUnchecked)
{
parentNode.Checked = false;
}
SetCategoryColor(parentNode);
}
else
{
foreach (TreeNode childNode in node.Nodes)
{
childNode.Checked = node.Checked;
(childNode.Tag as DiagItem).IsChecked = childNode.Checked;
}
SetCategoryColor(node);
}
(e.Node.Tag as DiagItem).IsChecked = e.Node.Checked;
e.Node.TreeView.AfterCheck += OnCheck;
}