日期:2014-05-18  浏览次数:20752 次

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;
                                        }
                                }