CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

TreeView

楼主szh1689(低手)2005-12-05 12:55:34 在 .NET技术 / C# 提问

各位师傅们:  
  我想实现,点Treeview其中一个接点的CheckBox为True   时,那么它父接点的CheckBox也为True,  
  如果一个接点的的所有子接点的CheckBox都为Flase时,那么这个接点的CheckBox也为Flase。有具体的代码或例子没?再线等待!!!!《窗体》 问题点数:20、回复次数:6Top

1 楼MyLf(不睡觉的鱼)回复于 2005-12-05 13:07:20 得分 20

活用递归和循环就可以了。  
   
  private   bool   blJmp   =   false;  
  //TreeView的事件  
  private   void   trvFun_AfterCheck(object   sender,   System.Windows.Forms.TreeViewEventArgs   e)  
  {  
  if(this.blJmp)return;  
  foreach(TreeNode   tn   in   e.Node.Nodes)  
  {  
  tn.Checked   =   e.Node.Checked;  
  }  
  this.blJmp   =   true;  
  this.SetCheck(e.Node);  
  this.blJmp   =   false;  
  }  
  //下面的都是辅助函数  
  private   void   SetCheck(TreeNode   n)  
  {  
  if(n.Checked)  
  {  
  this.parentNode(n,n.Checked);  
  }  
  else  
  {  
  if(n.Parent   !=   null)  
  {  
  //如果同一级中没有被选中,则其父级也同时设为不选中,在这种情况下,递归父节点  
  if(this.nextNotCheck(n.Parent.FirstNode))  
  {  
  n.Parent.Checked   =   false;  
  this.SetCheck(n.Parent);  
  }  
  }  
  }  
  }  
   
  private   void   parentNode(TreeNode   n,bool   check)  
  {  
  if(n.Parent   !=   null)  
  {  
  n.Parent.Checked   =   check;  
  this.parentNode(n.Parent,check);  
  }  
  }  
  //下一个节点是不是没有选中  
  private   bool   nextNotCheck(TreeNode   n)  
  {  
  if(n.Checked)   return   false;  
  if(n.NextNode   ==   null)   return   true;  
  return   this.nextNotCheck(n.NextNode);  
  }Top

2 楼szh1689(低手)回复于 2005-12-05 15:35:46 得分 0

楼上的大哥:  
  我按您的代码做是对的,但有一点缺点,该如何处理:  
  就是一个节点点击一次,那么事件能实现,如果再接着点击一次,那么它的事件就不能触发了,怎么处理?谢谢     我马上给您分Top

3 楼szh1689(低手)回复于 2005-12-05 16:11:38 得分 0

大哥们快帮帮忙吧!Top

4 楼MyLf(不睡觉的鱼)回复于 2005-12-05 16:30:45 得分 0

就是一个节点点击一次,那么事件能实现,如果再接着点击一次,那么它的事件就不能触发了  
  --------------------  
  我不明白你说的什么,什么再点击一次,什么事件不能触发?  
   
  这是我现在系统的代码,运行好好的,点n次都可以。   :-)Top

5 楼szh1689(低手)回复于 2005-12-05 16:46:53 得分 0

是这样的:假如点一个节点,它的CheckBox为真,那么接着再点一次CheckBox应该为假,而现在没反应Top

6 楼MyLf(不睡觉的鱼)回复于 2005-12-05 20:23:51 得分 0

嗯.我不知道你的代码是怎么样写的.  
   
  Top

相关问题

  • TreeView?
  • Treeview??
  • treeview
  • treeview
  • TREEVIEW
  • treeview
  • treeview
  • TreeView
  • about TreeView
  • treeview_DragOver()

关键词

  • 节点
  • 代码
  • null
  • bljmp
  • nextnotcheck
  • treeview
  • setcheck
  • 事件
  • parent
  • 选中

得分解答快速导航

  • 帖主:szh1689
  • MyLf

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo