检查父母是否检查过孩子

时间:2012-03-22 19:20:38

标签: c# treeview

我得到了这个树视图,我选择所有孩子,如果父母被检查,也回来了。还有一个规则来检查一些受抚养的孩子。问题是:我想检查父项是否有任何子项被检查,但是因为那些其他规则我找不到办法在没有规则的情况下发生冲突。所以这是我到目前为止所做的代码:

    private void tvMorgan_AfterCheck(object sender, TreeViewEventArgs e)
    {
        //Check Children if parent checked
        if (e.Node.Nodes.Count > 0)
        {
            TreeNode tnParent = e.Node;
            if (tnParent.Checked)
            {
                foreach (TreeNode tnChild in tnParent.Nodes)
                {
                    tnChild.Checked = true;
                }
            }
            //Unchecked children if parent unchecked
            else
            {
                foreach (TreeNode tnChild in tnParent.Nodes)
                {
                    tnChild.Checked = false;
                }
            }
        }
        //If dependent node is selected, check the other two
        else if (((e.Node.Text.Contains("BRL/EUR")) && (e.Node.Checked)) && (e.Node.Parent.Text.Contains("FWD")))
        {
            TreeNode tnParent = e.Node.Parent;

            foreach (TreeNode tn in tnParent.Nodes)
            {
                if (tn.Text.Contains("BRL/USD") || tn.Text.Contains("EUR/USD"))
                    tn.Checked = true;
            }
        }
        //If one of the two necessary nodes are uncheked, then uncheck the dependent one
        else if ((((e.Node.Text.Contains("BRL/USD")) || (e.Node.Text.Contains("EUR/USD"))) && (!e.Node.Checked)) && (e.Node.Parent.Text.Contains("FWD")))
        {
            TreeNode tnParent = e.Node.Parent;

            foreach (TreeNode tn in tnParent.Nodes)
            {
                if (tn.Text.Contains("BRL/EUR"))
                    tn.Checked = false;
            }
        }
    }

提前致谢

1 个答案:

答案 0 :(得分:0)

TreeView.AfterCheck Event的文档显示了您正在寻找的内容