注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

xian827991006

专注于DotNet编程,QlikView开发,网站seo,各种软件工具,互联网

 
 
 

日志

 
 
关于我

爱看书、爱探索的人. 目前关注与QlikView开发,推荐一个QlikView资源站。www.qlikviewcn.com

网易考拉推荐

Winform TreeView 节点CheckBox选中,取消  

2012-06-13 12:08:31|  分类: C#和VS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

先看一下效果图

Winform TreeView 节点CheckBox选中,取消 - xian827991006 - xian827991006



  

 private void treeView1_MouseClick(object sender, MouseEventArgs e)
{
TreeNode node = treeView1.GetNodeAt(new Point(e.X, e.Y));
if (node != null)
{
ChangeChild(node, node.Checked);//影响子节点
ChangeParent(node);//影响父节点
}
}
//递归子节点跟随其全选或全不选
private void ChangeChild(TreeNode node, bool state)
{
node.Checked = state;
foreach (TreeNode tn in node.Nodes)
ChangeChild(tn, state);
}
//递归父节点跟随其全选或全不选
private void ChangeParent(TreeNode node)
{
if (node.Parent != null)
{
//兄弟节点被选中的个数
int brotherNodeCheckedCount = 0;
//遍历该节点的兄弟节点
foreach (TreeNode tn in node.Parent.Nodes)
{
if (tn.Checked == true)
brotherNodeCheckedCount++;
}
//兄弟节点全没选,其父节点也不选
if (brotherNodeCheckedCount == 0)
{
node.Parent.Checked = false;
ChangeParent(node.Parent);
}
//兄弟节点只要有一个被选,其父节点也被选
if (brotherNodeCheckedCount >= 1)
{
node.Parent.Checked = true;
ChangeParent(node.Parent);
}
}
}


注意一定要在treeView1_MouseClick事件中调用方法,不要在treeView1_AfterCheck中调用,

否则会引起递归错误。

转自:http://www.cnblogs.com/leiOOlei/archive/2011/02/24/1963719.html


  评论这张
 
阅读(1039)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017