代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_C#

TreeView的有关问题:遍历节点处理CheckBox方面的

发布时间:2019-08-17浏览(1000)

    TreeView的问题:遍历节点处理CheckBox方面的
    在TreeView的AfterCheck事件里写的代码,目的是选中父节点的复选框,所有的子节点的复选框都选中;取消父节点所有子节点取消;点击一个子节点,父节点也选中;如果当前所有子节点都取消选中,则父节点也取消
    但是由于是AfterCheck事件,我发现在事件里比如点击了父节点,子节点也选中,结果就又触发了子节点的事件,继而触发父节点,导致死循环~~
    用Click事件写的话不知道如何获得点击当前节点

    AfterCheck事件:
                            if   (e.Node.Nodes.Count   ==   0)   //如果是叶子节点
                            {
                                    if   (e.Node.Checked)   //如果该节点为选中则处理父节点选中
                                    {
                                            e.Node.Parent.Checked   =   true;
                                    }
                                    else   //如果该节点取消选中
                                    {
                                            for   (int   i   =   0;   i   <   e.Node.Parent.Nodes.Count;   i++)
                                            {
                                                    if   (e.Node.Parent.Nodes[i].Checked)
                                                    {
                                                            e.Node.Parent.Checked   =   true;
                                                            break;
                                                    }
                                                    else
                                                            e.Node.Parent.Checked   =   false;
                                            }
                                    }

                            }
                            else//如果是父节点