C# TreeView的CheckBox 父/子节点点击联动选择效果
注:
点击时请正常速度点击,不然会出现“奇怪”现象!!! /// <summary>
/// 节点点击 子级->同级->父级
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tvRoles_AfterCheck(object sender, TreeViewEventArgs e)
{
if (e.Action != TreeViewAction.ByMouse) return;
ChildrenChecked(e.Node, e.Node.Checked);
ParentChecked(e.Node);
} /// <summary>
/// 把每一个父级当作子级
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
private void ParentChecked(TreeNode node)
{
if (node.Parent == null) return;
///单根
//if (node.PrevNode == null && node.NextNode == null)
//{
// node.Parent.Checked = node.Checked;
// return;
//}
///多根
//当前节点两种状态
if (!node.Checked)//节点没被选中,父节点不被选中
{
node.Parent.Checked = node.Checked;
}
else//节点被选中,同级节点决定父节点状态
{
node.Parent.Checked = PeerChecked(node);
}
ParentChecked(node.Parent);//继续上级忽略同级
}
private bool PeerChecked(TreeNode node)
{
if (node == null) return true;
return PeerPrevNodeChecked(node.PrevNode) && PeerNextNodeChecked(node.NextNode);
}
private bool PeerNextNodeChecked(TreeNode node)
{
if (node == null) return true;
return PeerNextNodeChecked(node.NextNode) & node.Checked;
}
private bool PeerPrevNodeChecked(TreeNode node)
{
if (node == null) return true;
if (node.Checked)
return PeerPrevNodeChecked(node.PrevNode);
return false;
}
/// <summary>
/// 把每一个子级当作父级
/// </summary>
/// <param name="node"></param>
/// <param name="check"></param>
private void ChildrenChecked(TreeNode node, bool check)
{
foreach (TreeNode item in node.Nodes)
{
ChildrenChecked(item, check);
item.Checked = check;
}
}
C# TreeView的CheckBox 父/子节点点击联动选择效果的更多相关文章
- EasyUI 树形菜单加载父/子节点
通常表示一个树节点的方式就是在每一个节点存储一个 parentid. 这个也被称为邻接列表模型. 直接加载这些数据到树形菜单(Tree)是不允许的. 但是我们可以在加载树形菜单之前,把它转换为标准标准 ...
- 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形菜单加载父/子节点
jQuery EasyUI 树形菜单 - 树形菜单加载父/子节点 通常表示一个树节点的方式就是在每一个节点存储一个 parentid. 这个也被称为邻接列表模型. 直接加载这些数据到树形菜单(Tree ...
- ELementUI 树形控件tree 获取子节点同时获取半选择状态的父节点ID
使用element-ui tree树形控件的时候,在选择一个子节点后,使用getCheckedKeys 后,发现只能返回子节点的ID,但是其父节点ID没有返回. 解决办法有三种: 1.element ...
- Cocos2d-x发展---更改父的颜色、透明度的子节点上
标题手段:当我们改变父节点或透明时的颜色.默认是不会影响孩子的节点. 作为交换组看到朋友说可以通过设置相关的参数变化的子节点来实现属性的效果,看了看源代码,记录下来: 引擎版本号为:2. ...
- zTree实现删除树子节点
zTree实现删除树子节点 1.实现源码 <!DOCTYPE html> <html> <head> <title>zTree实现基本树</tit ...
- javascrip实现:若选中TreeView的父节点checkbox,则其子节点全部选中;子节点全部没选中,则父节点也会没选中。
<script type="text/javascript"> function public_GetParentByTagName(element, tagName) ...
- Jstree 使用CheckBox插件 选中父节点时被禁用的子节点也会选中问题
问题描述: 最近用jstree遇到一个问题,使用CheckBox插件时,当父节点选中时,被禁用的子节点也会选中如下 解决方案: 1. 将jstree升级到最新的版本,v3.3.4及以上就可以 2. ...
- treeview插件使用:根据子节点选中父节点
鄙人公司没有专门的前端,所以项目开发中都是前后端一起抡.最近用bootstrap用的比较频繁,发现bootstrap除了框架本身的样式组件外,还提供了多种插件供开发者选择.本篇博文讲的就是bootst ...
- Treeview控件如何获得子节点的所有父节点的名称
Delphi或c++ 的treeview控件,比如一个节点上面有个父节点,这个父节点上面还有一个父节点,如何获得这两个父节点的名字呢?请给出实现代码 先定义一个nodevarnode:TTreeNod ...
随机推荐
- PHP面向对象学习一
1. 抽象性 , 2. 封装性 ,3.共享性 ,4. 强调对象结构而不是程序结构 面向对象的三大特点(封装,继承,多态)缺一不可 class MyPc{ ———创建一个名为 MyPc的类,class ...
- MVVM Command Binding: InvokeCommandAction v.s. EventToCommand
This gives you the ability to create a trigger on an event and bind it to an ICommand on the view mo ...
- CAS单点登录中文用户名乱码问题
CAS单点登录中文用户名乱码问题,有两种情况 1. CAS server乱码 即在向server端提交用户名和密码时,发生了乱码,解决方法是: 打开WEB-INF/web.xml,在其它的Filter ...
- 1063. Set Similarity (25)
1063. Set Similarity (25) 时间限制 300 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given ...
- [LintCode] Divide Two Integers 两数相除
Divide two integers without using multiplication, division and mod operator. If it is overflow, retu ...
- SurfaceView的简单使用
package com.example.administrator.mystudent.surfaceView; import android.content.Context; import andr ...
- setTimeout的用法
var n = 0; function fnTime(){alert(++n);}// 常用写法// 不加括号方式setTimeout(fnTime,5000);// 加字符串方式setTimeout ...
- JAVA 往jar包添加class文件
(1) jar -uf jarfile.jar yourclasses (2) 右击要打包的文件夹,选择“添加到压缩文件”,弹出对话框: 把压缩文件格式改为zip,再把压缩文件名中的反缀改为.jar, ...
- 【HDU 2853】 KM算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2853 题意:有n个公司,m个任务,每个公司做每个任务都有一个效率值,最开始每个公司都指派了一个任务,现 ...
- 词法分析器Antlr
一.我们都知道编程语言在执行之前需要先进行编译,这样就可以把代码转换成机器识别的语言,这个过程就是编译. 那么它是怎么编译的呢? Java在JVM虚拟机中进行编译,javascript在Js引擎中编译 ...