注:
  点击时请正常速度点击,不然会出现“奇怪”现象!!! /// <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 父/子节点点击联动选择效果的更多相关文章

  1. EasyUI 树形菜单加载父/子节点

    通常表示一个树节点的方式就是在每一个节点存储一个 parentid. 这个也被称为邻接列表模型. 直接加载这些数据到树形菜单(Tree)是不允许的. 但是我们可以在加载树形菜单之前,把它转换为标准标准 ...

  2. 雷林鹏分享:jQuery EasyUI 树形菜单 - 树形菜单加载父/子节点

    jQuery EasyUI 树形菜单 - 树形菜单加载父/子节点 通常表示一个树节点的方式就是在每一个节点存储一个 parentid. 这个也被称为邻接列表模型. 直接加载这些数据到树形菜单(Tree ...

  3. ELementUI 树形控件tree 获取子节点同时获取半选择状态的父节点ID

    使用element-ui  tree树形控件的时候,在选择一个子节点后,使用getCheckedKeys 后,发现只能返回子节点的ID,但是其父节点ID没有返回. 解决办法有三种: 1.element ...

  4. Cocos2d-x发展---更改父的颜色、透明度的子节点上

    标题手段:当我们改变父节点或透明时的颜色.默认是不会影响孩子的节点. 作为交换组看到朋友说可以通过设置相关的参数变化的子节点来实现属性的效果,看了看源代码,记录下来:        引擎版本号为:2. ...

  5. zTree实现删除树子节点

    zTree实现删除树子节点 1.实现源码 <!DOCTYPE html> <html> <head> <title>zTree实现基本树</tit ...

  6. javascrip实现:若选中TreeView的父节点checkbox,则其子节点全部选中;子节点全部没选中,则父节点也会没选中。

    <script type="text/javascript"> function public_GetParentByTagName(element, tagName) ...

  7. Jstree 使用CheckBox插件 选中父节点时被禁用的子节点也会选中问题

    问题描述: 最近用jstree遇到一个问题,使用CheckBox插件时,当父节点选中时,被禁用的子节点也会选中如下 解决方案: 1.  将jstree升级到最新的版本,v3.3.4及以上就可以 2. ...

  8. treeview插件使用:根据子节点选中父节点

    鄙人公司没有专门的前端,所以项目开发中都是前后端一起抡.最近用bootstrap用的比较频繁,发现bootstrap除了框架本身的样式组件外,还提供了多种插件供开发者选择.本篇博文讲的就是bootst ...

  9. Treeview控件如何获得子节点的所有父节点的名称

    Delphi或c++ 的treeview控件,比如一个节点上面有个父节点,这个父节点上面还有一个父节点,如何获得这两个父节点的名字呢?请给出实现代码 先定义一个nodevarnode:TTreeNod ...

随机推荐

  1. iOS 网络框架编写总结

    一,常用 1> 不错的处理接收到的网络图片数据的方法 id img= ISNSNULL(pic)?nil:[pic valueForKey:@"img"]; NSString ...

  2. Linux 下安装mysql 链接库

    1.mysql 客户端 开发 链接库 1.1)CentOS yum install mysql-devel

  3. [LintCode] Left Pad 左填充

    You know what, left pad is javascript package and referenced by React: Github link One day his autho ...

  4. vs2013打开 2010项目时: 请确认 <Import> 声明中的路径正确,且磁盘上存在该文件

    错误原因:原来2010项目中使用的路径是 v11.0,但是我的 C:\Program Files (x86)\MSBuild\12.0\ 是 12.0,所以该成 12.0 解决办法:将项目文件(.cs ...

  5. sort将文件的每一行作为一个单位按ASCII码值进行比较

    1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [rocrocket@rocrocket progr ...

  6. VB鼠标指针

    vbDefault 0 (缺省值)形状由对象决定. VbArrow 1 箭头. VbCrosshair 2 十字线(crosshair 指针). VbIbeam 3 I 型 VbIconPointer ...

  7. 关于c++风格 code style

    Header files should be self-contained. All header files should have #define guards to prevent multip ...

  8. MBR(Master Boot Record)主引导记录分析

    root@ubuntu1404:/home/chen# fdisk -l /dev/sda1 Disk /dev/sda1: MB, bytes heads, sectors/track, cylin ...

  9. Eclipse new server : Cancnot create a server using the selected type

    1.退出 eclipse 2.到[工程目录下]/.metadata/.plugins/org.eclipse.core.runtime 3.把org.eclipse.wst.server.core.p ...

  10. Interface => IDataErrorInfo

    Introduction to common Interfaces IDataErrorInfo Provides the functionality to offer custom error in ...