這篇文章主要介紹了C#中TreeView實現適合兩級節點的選中節點方法,實例分析了C#中TreeView節點操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了C#中TreeView實現適合兩級節點的選中節點方法。分享給大家供大家參考。具體如下:
- class TreeViewChecked
- {
- bool isfirst = true;
- public TreeViewChecked(TreeView treeView)
- {
- treeView.AfterCheck += new TreeViewEventHandler(treeView_AfterCheck);
- treeView.AfterSelect += new TreeViewEventHandler(treeView_AfterSelect);
- }
- /// <summary>
- /// 點擊文字,選中checkbox
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- void treeView_AfterSelect(object sender, TreeViewEventArgs e)
- {
- 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>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- void treeView_AfterCheck(object sender, TreeViewEventArgs e)
- {
- CheckTreeNode(e.Node);
- }
- /// <summary>
- /// 選中子節點,勾選父節點,選中父節點,勾選子節點
- /// </summary>
- /// <param name="node"></param>
- private void CheckTreeNode(TreeNode node)
- {
- node.TreeView.AfterCheck -= new TreeViewEventHandler(treeView_AfterCheck);
- //如果不等于null,說明選擇的是子節點
- if (node.Parent != null)
- {
- TreeNode parent = node.Parent as TreeNode;
- //如果該節點是選中的
- if (node.Checked)
- {
- //判斷其父節點是否被選中,如果沒有被選中則選中它
- if (parent.Checked == false)
- {
- parent.Checked = true;
- }
- }
- else
- {
- bool ischecked = false;
- foreach (TreeNode child in parent.Nodes)
- {
- if (child.Checked)
- {
- ischecked = true;
- break;
- }
- }
- if (ischecked)
- parent.Checked = true;
- else
- parent.Checked = false;
- }
- }//如果等于null,說明選擇的是根節點
- else
- {
- foreach (TreeNode child in node.Nodes)
- {
- child.Checked = node.Checked;
- }
- }
- node.TreeView.AfterCheck += new TreeViewEventHandler(treeView_AfterCheck);
- }
- }
希望本文所述對大家的C#程序設計有所幫助。
新聞熱點
疑難解答