C# 中TreeView 控件实现点击CheckBoX自动打钩的事件
来源:互联网 发布:东莞seo顾问 编辑:程序博客网 时间:2024/06/10 11:09
自己想要做一个TreeView,点击节点的CheckBox能让其子节点及父节点做出相应的事件。
也不知道是不是自己的搜索方式不对,只能找到个近似的框架,通过自己修改以达到自己的要求。
现将自己的需求及代码贴上,希望能对有类似需求的同学们有帮助~~
要求:
1.父节点勾选,则子节点全部勾选;
2.父节点不勾选,则子节点全部不勾选;
3.子节点部分勾选,则父节点不勾选;
4.子节点全部勾选,则父节点被勾选;
就是这么一个简单的功能,自己改了1~2天,才把原先的一些问题解决,现在应该是能满足以上要求了~
#region check选择事件
private bool nextCheck(TreeNode n) //判断同级的节点是否全选
{
foreach (TreeNode tn in n.Parent.Nodes)
{
if (tn.Checked == false) return false;
}
return true;
}
private bool nextNotCheck(TreeNode n) //判断同级的节点是否全不选
{
if (n.Checked == true)
{
return false;
}
if(n.NextNode==null)
{
return true;
}
return this.nextNotCheck(n.NextNode);
}
private void cycleChild(TreeNode tn,bool check) //遍历节点下的子节点
{
if (tn.Nodes.Count != 0)
{
foreach (TreeNode child in tn.Nodes)
{
child.Checked = check;
if (child.Nodes.Count != 0)
{
cycleChild(child, check);
}
}
}
else
return;
}
private void cycleParent(TreeNode tn, bool check) //遍历节点上的父节点
{
if (tn.Parent!=null)
{
if (nextCheck(tn))
{
tn.Parent.Checked = true;
}
else
{
tn.Parent.Checked = false;
}
cycleParent(tn.Parent, check);
}
return;
}
// afterCheck
private void treeViewTest_AfterCheck(object sender, TreeViewEventArgs e) //当选中或取消选中树节点上的复选框时发生
{
//要求父节点被勾选,则子节点全部被勾选;父节点不被勾选,则子节点不全不被勾选
if (e.Node.Checked == true)
{
if (e.Action != TreeViewAction.Unknown)
{
cycleChild(e.Node, true);
}
if (e.Node.Parent != null)
{
if (nextCheck(e.Node))
{
cycleParent(e.Node,true);
}
else
{
cycleParent(e.Node, false);
}
}
}
if (e.Node.Checked == false)
{
if (e.Action != TreeViewAction.Unknown)
{
cycleChild(e.Node, false); //中间节点不选中则子节点全部不选中
cycleParent(e.Node, false); //父节点不选中
}
//bCheck = false;
}
return;
}
#endregion
至于TreeView 中加入CheckBox的话,只要把控件的属性 CheckBoxes改为True 就好了~~
代码写得很长,有什么不足的地方,欢迎指正。。。。
- C# 中TreeView 控件实现点击CheckBoX自动打钩的事件
- 关于含有checkbox的treeview控件 的checkbox的点击事件
- TreeView控件的CheckBox自动实现父子节点递归选定
- vs 2005 中TreeView 控件checkbox 的回发事件
- 【转】C# webform中treeview的checkbox勾选父子联动事件如何实现?
- 【项目】TreeView控件的CheckBox选中事件
- 实现checkbox全选打钩及消除,点击单个checkbox打钩及消除JS代码实现
- WPF的Treeview控件实现CheckBox
- C# TreeView+checkBox 自动加载
- TreeView控件中选中节点前的checkBox仍然会触发NodeMouseClick事件
- 在PB的TreeView控件中实现自动查询
- c# Gridview 点击checkbox 触发的事件
- javacript实现TreeView中checkBox的选择
- c# winform 遍历TreeView控件(属性为checkbox时)中,所有被选中的节点
- c# winform TreeView控件中实现拖拽的功能
- c# winform TreeView控件中实现拖拽的功能
- c# winform TreeView控件中实现拖拽的功能
- c# winform TreeView控件中实现拖拽的功能
- Ophone平台蓝牙编程基础
- MYSQL导入导出.sql文件
- Mysql弱口令得到系统权限
- SQL查询优化
- IDEA + Eclipse 开发 Maven Flex 项目的简单流程和要点
- C# 中TreeView 控件实现点击CheckBoX自动打钩的事件
- 几种常见浏览器内核简介
- 基础_C# 数据类型、默认值、new关键字、格式化数值结果表
- 大型高并发高负载web应用系统架构-缓存架构策略
- 队列存储及运算
- 深入研究Java类加载机制
- 第五部分 并发工具包
- javamail 发邮件 附件
- WEB水晶报表直接打印