zoukankan      html  css  js  c++  java
  • 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; } }
  • 相关阅读:
    Django 事务 多表操作
    python oss上传图片
    WARNINGS: ?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
    解决VMware服务起不来的问题
    go-用法
    go-基础语法
    django_filters导入失败
    Git
    windows10安装ubuntu18.04(64位)双系统教程
    Ubuntu系统运行Steam中VR游戏的相关软件环境配置说明
  • 原文地址:https://www.cnblogs.com/wjshan0808/p/4459246.html
Copyright © 2011-2022 走看看