CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

treeview控件 全选,全清

楼主liym15(期待)2005-07-22 15:45:46 在 .NET技术 / VB.NET 提问

当我点击全选按钮时,treeview的checkbox则全部要打勾,子节也要打勾,当我点击全清按钮时,则treeview的checkbox全部清掉打勾,子节点也要清掉  
  请高手赐教 问题点数:20、回复次数:4Top

1 楼lujianjiang()回复于 2005-07-22 17:06:04 得分 5

使用递归遍历Nodes集合嘛!Top

2 楼zmzzll(散散心)回复于 2005-07-22 17:20:17 得分 0

upTop

3 楼zmzzll(散散心)回复于 2005-07-22 17:22:35 得分 5

借花献佛  
  http://community.csdn.net/Expert/topic/3993/3993993.xml?temp=.5265619Top

4 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-07-22 17:24:08 得分 10

1. 在树节点中显示出了checkbox,点一节点后让其所有子节点都设置其checkbox的值与该节点一致。  
  方法一:  
  '使子树的CHECKBOX与父亲节点的一致  
          Public   Shared   Function   ToggleAllNode(ByVal   CurrentNode   As   TreeNode,   ByVal   bChecked   As   Boolean)  
                  Dim   node   As   TreeNode  
                  For   Each   node   In   CurrentNode.Nodes  
                          node.Checked   =   bChecked  
                          If   node.Nodes.Count   >   0   Then  
                                  ToggleAllNode(node,   bChecked)  
                          End   If  
                  Next  
          End   Function  
  方法二:  
  Private   Sub   ToggleAllNode(ByVal   CurrentNode   As   TreeNode,   ByVal   bChecked   As   Boolean)  
                  Dim   mNodes   As   TreeNodeCollection  
                  If   (Not   CurrentNode   Is   Nothing)   Then  
                          mNodes   =   CurrentNode.Nodes   '所有当前节点的子节点集合  
                          If   (Not   mNodes   Is   Nothing)   Then  
                                  '遍历  
                                  Dim   lev   As   IEnumerator   =   mNodes.GetEnumerator  
                                  While   lev.MoveNext  
                                          Dim   childnode   As   TreeNode   =   CType(lev.Current,   TreeNode)  
                                          childnode.Checked   =   bChecked  
                                          ToggleAllNode(childnode,   bChecked)  
                                  End   While  
                          End   If  
                  End   If  
  End   Sub  
  2. 树中点了某节点,设置其父亲节点的checkbox也随着改变,如果当前节点是TRUE,则父亲节点都为TRUE,如果当前节点是FALSE,则要判断父亲节点的所有子节点是否都为FALSE,如果都是才设置父亲节点为FALSE,否则不变。  
  Public   Shared   Function   AscendRootNode(ByVal   CurrentNode   As   TreeNode,   ByVal   bchecked   As   Boolean)  
                  Dim   mnodes   As   TreeNode  
                  If   Not   CurrentNode   Is   Nothing   Then  
                          mnodes   =   CurrentNode.Parent‘父亲节点  
                          If   Not   mnodes   Is   Nothing   Then  
                                  If   Not   bchecked   Then   ‘如果是FALSE,则要遍历该父亲节点的所有子节点,看是否都为FALSE  
                                          Dim   cnode   As   TreeNode  
                                          Dim   IsAllFalse   As   Boolean   =   True  
                                          For   Each   cnode   In   mnodes.Nodes  
                                                  If   cnode.Checked   =   True   Then  
                                                          IsAllFalse   =   False  
                                                          Exit   For  
                                                  End   If  
                                          Next  
                                          If   IsAllFalse   Then  
                                                  mnodes.Checked   =   False  
                                          End   If  
                                          AscendRootNode(mnodes,   bchecked)   ‘递归调用  
                                  Else  
                                          mnodes.Checked   =   True   ‘如果为TRUE,则直接设置为TRUE即可  
                                          AscendRootNode(mnodes,   bchecked)   ‘递归调用  
                                  End   If  
                          End   If  
                  End   If  
  End   Function  
   
  **************************  
  调用过程:  
  Private   Sub   trvUserRight_AfterCheck(ByVal   sender   As   Object,   ByVal   e   As   System.Windows.Forms.TreeViewEventArgs)   Handles   trvUserRight.AfterCheck  
                    Try  
                          If   e.Action   <>   TreeViewAction.Unknown   Then  
                                  ToggleAllNode(e.Node,   e.Node.Checked)  
                                  AscendRootNode(e.Node,   e.Node.Checked)  
                          End   If  
                  Catch   ex   As   Exception  
                          MessageBox.Show(ex.ToString)  
                  End   Try  
  End   Sub  
   
  Top

相关问题

  • 简单的treeview 全选,全清
  • c#中如何完成对Treeview控件中选择框CheckBox的全选处理
  • TEXTBOX 控件的全选中问题
  • TREEVIEW控件
  • 求treeview控件
  • treeview控件
  • TreeView控件
  • 求TreeView控件
  • TreeView控件问题
  • 关于treeview控件

关键词

  • 节点
  • mnodes
  • bchecked
  • toggleallnode
  • currentnode
  • ascendrootnode
  • isallfalse
  • 遍历
  • 递归
  • treenode

得分解答快速导航

  • 帖主:liym15
  • lujianjiang
  • zmzzll
  • hamadou

相关链接

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

广告也精彩

反馈

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