private static void OnCheck()

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;            


        }