C#中TreeView实现适合两级节点的选中节点方法
本文实例讲述了C#中TreeView实现适合两级节点的选中节点方法。分享给大家供大家参考。具体如下:
classTreeViewChecked { boolisfirst=true; publicTreeViewChecked(TreeViewtreeView) { treeView.AfterCheck+=newTreeViewEventHandler(treeView_AfterCheck); treeView.AfterSelect+=newTreeViewEventHandler(treeView_AfterSelect); } ///<summary> ///点击文字,选中checkbox ///</summary> ///<paramname="sender"></param> ///<paramname="e"></param> voidtreeView_AfterSelect(objectsender,TreeViewEventArgse) { if(e.Node.Checked) e.Node.Checked=false; else e.Node.Checked=true; if(isfirst) { isfirst=false; e.Node.TreeView.Nodes[0].Checked=false; } } ///<summary> ///选中子节点,勾选父节点,选中父节点,勾选子节点 ///</summary> ///<paramname="sender"></param> ///<paramname="e"></param> voidtreeView_AfterCheck(objectsender,TreeViewEventArgse) { CheckTreeNode(e.Node); } ///<summary> ///选中子节点,勾选父节点,选中父节点,勾选子节点 ///</summary> ///<paramname="node"></param> privatevoidCheckTreeNode(TreeNodenode) { node.TreeView.AfterCheck-=newTreeViewEventHandler(treeView_AfterCheck); //如果不等于null,说明选择的是子节点 if(node.Parent!=null) { TreeNodeparent=node.ParentasTreeNode; //如果该节点是选中的 if(node.Checked) { //判断其父节点是否被选中,如果没有被选中则选中它 if(parent.Checked==false) { parent.Checked=true; } } else { boolischecked=false; foreach(TreeNodechildinparent.Nodes) { if(child.Checked) { ischecked=true; break; } } if(ischecked) parent.Checked=true; else parent.Checked=false; } }//如果等于null,说明选择的是根节点 else { foreach(TreeNodechildinnode.Nodes) { child.Checked=node.Checked; } } node.TreeView.AfterCheck+=newTreeViewEventHandler(treeView_AfterCheck); } }
希望本文所述对大家的C#程序设计有所帮助。