- /// <summary>
- /// 单击节点事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void tvPower_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
- {
- TreeNode node = e.Node;
- CheckParentNode(node);
- CheckSubNode(node);
- }
- /// <summary>
- /// 点击更新父节点
- /// </summary>
- /// <param name="node"></param>
- private void CheckParentNode(TreeNode node)
- {
- bool checkState = node.Checked;
- //此方法可以使父节点也选中,但是不能实现当子节点全部取消选择时父节点也取消选择
- //while (node.Parent != null && checkState)
- while (node.Parent != null)
- {
- //如果节点取消选择
- //则遍历所有同级节点
- //如果同级节点有选中状态的
- //则父节点也选中
- if (!checkState)
- {
- foreach (TreeNode subNode in node.Parent.Nodes)
- {
- if (subNode.Checked)
- {
- checkState = true;
- }
- }
- }
- node.Parent.Checked = checkState;
- node = node.Parent;
- }
- }
- /// <summary>
- /// 点击更新子节点
- /// </summary>
- /// <param name="node"></param>
- private void CheckSubNode(TreeNode node)
- {
- bool checkState = node.Checked;
- foreach (TreeNode subNode in node.Nodes)
- {
- subNode.Checked = checkState;
- CheckSubNode(subNode);
- }
- }
项目中树的Checked鼠标选择处理
最新推荐文章于 2023-10-16 08:00:00 发布