TreeView中节点勾选设置

摘要:
代码中对事件参数e.Action的判断,可以避免在改变节点的Checked的状态时,再次进入AfterCheck(),这样当在AfterCheck()中有其他逻辑响应时,可以做到每次勾选时,其他逻辑也只响应一次。

本文转载:http://www.cnblogs.com/luxiaoxun/p/3288003.html

很不错的文章:http://www.cnblogs.com/allen0118/archive/2012/11/28/2793037.html

TreeView树中节点勾选要求:

1、不选中一个节点,则其所有的子节点都不被选中。

2、选中一个节点,则其所有的子节点都被选中。

3、当一个节点的所有子节点都没有被选中时,该节点也没有被选中。

4、当一个节点的所有子节点中有一个被选中时,则该节点也被选中。

代码中对事件参数e.Action的判断,可以避免在改变节点的Checked的状态时,再次进入AfterCheck(),这样当在AfterCheck()中有其他逻辑响应时,可以做到每次勾选时,其他逻辑也只响应一次。

参考代码:

TreeView中节点勾选设置第1张TreeView中节点勾选设置第2张
privatevoidtreeView_AfterCheck(objectsender,TreeViewEventArgse)
{
//通过鼠标或者键盘触发事件,防止修改节点的Checked状态时候再次进入if(e.Action==TreeViewAction.ByMouse||e.Action==TreeViewAction.ByKeyboard)
{
SetChildNodeCheckedState(e.Node,e.Node.Checked);
SetParentNodeCheckedState(e.Node,e.Node.Checked);
}
}
//设置子节点状态privatevoidSetChildNodeCheckedState(TreeNodecurrNode,boolisCheckedOrNot)
{
if(currNode.Nodes==null)return;//没有子节点返回foreach(TreeNodetmpNodeincurrNode.Nodes)
{
tmpNode.Checked=isCheckedOrNot;
SetChildNodeCheckedState(tmpNode,isCheckedOrNot);
}
}
//设置父节点状态privatevoidSetParentNodeCheckedState(TreeNodecurrNode,boolisCheckedOrNot)
{
if(currNode.Parent==null)return;//没有父节点返回if(isCheckedOrNot)//如果当前节点被选中,则设置所有父节点都被选中{
currNode.Parent.Checked=isCheckedOrNot;
SetParentNodeCheckedState(currNode.Parent,isCheckedOrNot);
}
else//如果当前节点没有被选中,则当其父节点的子节点有一个被选中时,父节点被选中,否则父节点不被选中{
boolcheckedFlag=false;
foreach(TreeNodetmpNodeincurrNode.Parent.Nodes)
{
if(tmpNode.Checked)
{
checkedFlag=true;
break;
}
}
currNode.Parent.Checked=checkedFlag;
SetParentNodeCheckedState(currNode.Parent,checkedFlag);
}
}
View Code

免责声明:文章转载自《TreeView中节点勾选设置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇开源协议Android多开/分身检测下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF中TreeView控件的使用案例

WPF总体来说还是比较方便的,其中变化最大的主要是Listview和Treeview控件,而且TreeView似乎在WPF是一个备受指责的控件,很多人说他不好用。我这个demo主要是在wpf中使用TreeView控件实现图片查看功能,简单的Grid布局、TreeView控件添加图标、TreeView控件的一些事件、显示统计、还有就是读取文件操作。 效果图:...

WPF笔记(3)TreeView

TreeView表示的是层次化结构(hierarchical)数据。TreeView的每一项称为TreeViewItem。TreeViewItem既可以被定义成一个字符串,也可以是一个嵌套的Item对象集合。TreeView的类层次结构如下: ControlItemsControlHeaderedItemsControlMenuItemToolBarTre...

[WPF](小结4)TreeView的数据分层模板

前边研究的是某控件嵌套某控件,这里相当于树嵌套树,但这里不能这么叫,树很特殊,它有一个分层数据模板:HierarchicalDataTemplate,现在来看如何使用, 第一:选构建题目类,再建一个选项类,题目类集合中的每个项包含一个选项类集合,即数组嵌套数组,C#语句如下: (为方便看清语句,类直接写在主程序中) C#代码如下:usingSyste...

WinForm实现简单的拖拽功能(C#)

用到了ListBox和TreeView两个控件,ListBox作为数据源,通过拖拽其中的数据放置到TreeView上,自动添加一个树节点 ListBox控件的MouseDown用于获取要拖拽的值并调用DoDragDrop方法 privatevoidlistBox1_MouseDown(objectsender,MouseEventArgse){//调用Do...

wpf treeview 数据绑定 递归绑定节点

1.先上效果 将所有节点加入ComboBox数据源,在ComboBox中选择时下方Treeview显示该节点下的子节点。 1.xaml文件,将以下代码加入界面合适位置 1     <StackPanel> 2 <StackPanel Margin="10"> 3 <La...

(转)C# WinForm开发系列 TreeView

包含异步加载树,带拖动,多选,动画效果等控件(文章及相关代码搜集自网络,仅供参考学习,版权属于原作者! ). 1.我的资源管理器 2.支持Animation效果的树控件 翻译Stu-Smith著Customizable Tree Control with Animation Supportivanx译 For MSPROJECT.CN 简介本文实现一个全定...