winformC# TreeView 点击父节点,子节点全选,
生活随笔
收集整理的這篇文章主要介紹了
winformC# TreeView 点击父节点,子节点全选,
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
private bool nextCheck(TreeNode n) //判斷同級的節點是否全選{foreach (TreeNode tn in n.Parent.Nodes){if (tn.Checked == false) return false;}return true;}private bool nextNotCheck(TreeNode n) //判斷同級的節點是否全不選{if (n.Checked == true){return false;}if (n.NextNode == null){return true;}return this.nextNotCheck(n.NextNode);}private void cycleChild(TreeNode tn, bool check) //遍歷節點下的子節點{if (tn.Nodes.Count != 0){foreach (TreeNode child in tn.Nodes){child.Checked = check;if (child.Nodes.Count != 0){cycleChild(child, check);}}}elsereturn;}private void cycleParent(TreeNode tn, bool check) //遍歷節點上的父節點{if (tn.Parent != null){if (nextCheck(tn)){tn.Parent.Checked = true;}else{tn.Parent.Checked = false;}cycleParent(tn.Parent, check);}return;}// afterCheckprivate void treeView1_AfterCheak(object sender, TreeViewEventArgs e) //當選中或取消選中樹節點上的復選框時發生{//要求父節點被勾選,則子節點全部被勾選;父節點不被勾選,則子節點不全不被勾選if (e.Node.Checked == true){if (e.Action != TreeViewAction.Unknown){cycleChild(e.Node, true);}if (e.Node.Parent != null){if (nextCheck(e.Node)){cycleParent(e.Node, true);}else{cycleParent(e.Node, false);}}}if (e.Node.Checked == false){if (e.Action != TreeViewAction.Unknown){cycleChild(e.Node, false); //中間節點不選中則子節點全部不選中cycleParent(e.Node, false); //父節點不選中}// bCheck = false;}return;} C#treeview 一坨黃色?|?初學一級?|?園豆:13
提問于:2012-04-23 11:02 最佳答案 0
提問于:2012-04-23 11:02 最佳答案 0
直接用我這個得了:
Boolean bChildTrigger = true; Boolean bParentTrigger = true;private void tv_AfterCheck(object sender, TreeViewEventArgs e) {// MessageBox.Show("Node text: " + e.Node.Text);if (bChildTrigger){CheckAllChildren(e.Node, e.Node.Checked); }if (bParentTrigger){ CheckMyParent(e.Node, e.Node.Checked);} }void CheckAllChildren(TreeNode tn, Boolean bCheck) {bParentTrigger = false;foreach (TreeNode ctn in tn.Nodes){bChildTrigger = false; ctn.Checked = bCheck;bChildTrigger = true;CheckAllChildren(ctn, bCheck);}bParentTrigger = true; }void CheckMyParent(TreeNode tn, Boolean bCheck) {if (tn == null) return;if (tn.Parent == null) return;bChildTrigger = false;bParentTrigger = false;tn.Parent.Checked = bCheck;CheckMyParent(tn.Parent, bCheck);bParentTrigger = true;bChildTrigger = true; } 收獲園豆:50 回復?|?ArnoldZhang?|?大俠五級?|園豆:8874?|?2012-04-23 11:30試了你的代碼.不行啊,點父節點的check 下面的子節點沒反應.
支持(0)反對(0)回復?|?一坨黃色?|?園豆:13?(初學一級)?|?2012-04-23 11:39@一坨黃色: 不會吧。你自己改改試試。
支持(0)反對(0)回復?|?ArnoldZhang?|?園豆:8874?(大俠五級)?|?2012-04-23 12:05@荒野的呼喚:?你的代碼只要把tv_AfterCheak改成我的treeview控件名稱就可以了撒..其它位置不用改撒.我試了不行啊..
支持(0)反對(0)回復?|?一坨黃色?|?園豆:13?(初學一級)?|?2012-04-23 14:07 其他回答(4) 0 private bool nextNotCheck(TreeNode n) //判斷同級的節點是否全不選{if (n.Checked == true){return false;}if (n.NextNode == null){return true;}return this.nextNotCheck(n.NextNode);轉載于:https://www.cnblogs.com/ting5/p/6225692.html
總結
以上是生活随笔為你收集整理的winformC# TreeView 点击父节点,子节点全选,的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs2013缺少Mvc 怎么办?
- 下一篇: 关于readdir返回值中struct