TreeView 点击触发父节点、子节点的连锁反应选中与取消

TreeView 通常和CheckBoxs一起使用,涉及到选中与取消时,连锁翻译触发父节点、子节点的选中与取消。

只供个人今后学习使用,如有涉及到相同,为个人转载,请告知博主。

当我选择一个父节点,希望该父节点下所有的子节点都被选中,取消一个节点,希望他所有的父节点都取消,例如 
 
代码如下所示

//取消节点选中状态之后,取消所有父节点的选中状态
        private void setParentNodeCheckedState(TreeNode currNode, bool state)
        {
            TreeNode parentNode = currNode.Parent;
                parentNode.Checked = state;
                if (currNode.Parent.Parent != null)
                {
                    setParentNodeCheckedState(currNode.Parent, state);
                }
        }
        //选中节点之后,选中节点的所有子节点
        private void setChildNodeCheckedState(TreeNode currNode, bool state)
        {
            TreeNodeCollection nodes=currNode.Nodes;
            if (nodes.Count > 0)
            {
                foreach (TreeNode tn in nodes)
                {
                    tn.Checked = state;
                    setChildNodeCheckedState(tn, state);
                }
            }
        }
        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
        {
            if (e.Action == TreeViewAction.ByMouse)
            {
                textBox1.Text = e.Node.Text;
                if (e.Node.Checked == true)
                {
                    //选中节点之后,选中该节点所有的子节点
                    setChildNodeCheckedState(e.Node, true);
                }
                else if(e.Node.Checked == false)
                {
                    //取消节点选中状态之后,取消该节点所有子节点选中状态
                    setChildNodeCheckedState(e.Node, false);
                    //如果节点存在父节点,取消父节点的选中状态
                    if (e.Node.Parent != null)
                    {
                        setParentNodeCheckedState(e.Node, false);
                    }
                }
            }
        }
时间: 2024-12-20 19:57:16

TreeView 点击触发父节点、子节点的连锁反应选中与取消的相关文章

js jquery 获取元素(父节点,子节点,兄弟节点)

一,js 获取元素(父节点,子节点,兄弟节点) var test = document.getElementById("test"); var parent = test.parentNode; // 父节点 var chils = test.childNodes; // 全部子节点 var first = test.firstChild; // 第一个子节点 var last = test.lastChile; // 最后一个子节点 var previous = test.previ

js jquery 获取元素(父节点,子节点,兄弟节点),元素筛选

转载:https://www.cnblogs.com/ooo0/p/6278102.html js jquery 获取元素(父节点,子节点,兄弟节点) 一,js 获取元素(父节点,子节点,兄弟节点) var test = document.getElementById("test"); var parent = test.parentNode; // 父节点 var chils = test.childNodes; // 全部子节点 var first = test.firstChil

js|jq获取兄弟节点,父节点,子节点

08.19自我总结 js|jq获取兄弟节点,父节点,子节点 一.js var parent = test.parentNode; // 父节点 var chils = test.childNodes; // 全部子节点 var first = test.firstChild; // 第一个子节点 var last = test.lastChile; // 最后一个子节点 var previous = test.previousSibling; // 上一个兄弟节点 var next = test

jquery 获取元素(父节点,子节点,兄弟节点)

一, js 获取元素(父节点,子节点,兄弟节点)var test = document.getElementById("test"); var parent = test.parentNode; // 父节点 var chils = test.childNodes; // 全部子节点 var first = test.firstChild; // 第一个子节点 var last = test.lastChile; // 最后一个子节点 var previous = test.previ

通用多层json递归解析,根据json层级关系直接使用: 基节点.子节点.孙节点。

package com.matol.utils; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Properties; import org.codehaus.jackson.map.Obje

[extjs] ExtJS4 treepanel 子节点选中父节点自动选中,选中父节点 子节点自动全部选中

ExtJS4 treepanel 主要添加viewConfig重的代码: xtype:'treepanel', store: menuStore, id:'menuTreePanel', viewConfig : { //checkbox联动 onCheckboxChange : function(e, t) { var item = e.getTarget(this.getItemSelector(), this.getTargetEl()), record; if (item){ recor

C#中treeview的问题,如何区分根节点和子节点以及根节点和根节点的兄弟节点?

根节点的Level属性为0,一级子节点Level属性为1,二级子节点Level属性为2,以此类推:同级节点可以用索引.名称.文本来区分.用索引区分根节点时,TreeView.Nodes[0]就是第一个根节点,TreeView.Nodes[1]就是第二个根节点,以此类推:用索引区分一级子节点时,TreeView.Nodes[0].Nodes[0]为第一个根节点的第一个子节点,TreeView.Nodes[0].Nodes[1]是第一个根节点的第二个子节点,以此类推: 2.如何获取TreeView点

C# TreeView控件 父节点子节点勾选变化关联

项目用到了TreeView控件,父节点子节点勾选需要关联.子节点勾选,父节点同步.父节点勾选,所有子节点都勾选,并递归.网上找了一圈,好多代码都不满足要求.节点勾选,向下递归子节点,都实现了.节点勾选,向上递归,父节点同步勾选,也实现了.但是节点去除勾选,应该判断其同级所有节点,若同级节点都处于未勾选状态,则应该去除父节点勾选状态,并向上递归.这一点,没有找到合适的代码.就自己写了这部分代码.仅仅只是实现这个效果,代码还有优化的空间,后续有时间再来修改了. private void treeVi

jQuery之防止冒泡事件,冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件。

冒泡事件就是点击子节点,会向上触发父节点,祖先节点的点击事件. 下面是html代码部分: <body> <div id="content"> 外层div元素 <span>内层span元素</span> 外层div元素 </div> <div id="msg"></div> </body> 对应的jQuery代码如下: <script type="text/