關於TreeView中CheckBox的使用

來源:互聯網
上載者:User

      項目設計中要使用TreeView中CheckBox(在TreeView的屬性中的CheckBoxes設為ture)。想達到一個這樣的效果:

     

      1、選中一個節點,則子節點的狀態為當前節點的狀態並設定展開或摺疊。如:本來預設全部是摺疊的,當選擇Laboratory並使其Checked為true時,其子節點的狀態都為true並展開節點,反之。關閉節點。

      2、當子節點中至少一個節點狀態為false時,其父節點狀態仍為true,但是顏色變為灰色。

 

這個功能發生的事件是TreeView事件中的AfterCheck

 

代碼如下:

  private void tvRoleAll_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)<br /> {</p><p> if (e.Action != TreeViewAction.Unknown)<br /> {<br /> SetNodeCheckStatus(e.Node, e.Node.Checked);<br /> SetNodeStyle(e.Node);<br /> }</p><p> }</p><p> private void SetNodeCheckStatus(TreeNode tn, bool Checked)<br /> {</p><p> if (tn == null) return;<br /> foreach (TreeNode tnChild in tn.Nodes)<br /> {</p><p> tnChild.Checked = Checked;</p><p> SetNodeCheckStatus(tnChild, Checked);</p><p> }<br /> TreeNode tnParent = tn;<br /> }</p><p> private void SetNodeStyle(TreeNode Node)<br /> {<br /> int nNodeCount = 0;<br /> if (Node.Nodes.Count != 0)<br /> {<br /> foreach (TreeNode tnTemp in Node.Nodes)<br /> {</p><p> if (tnTemp.Checked == true)</p><p> nNodeCount++;<br /> }</p><p> if (nNodeCount == Node.Nodes.Count)<br /> {<br /> Node.Checked = true;<br /> Node.ExpandAll();<br /> Node.ForeColor = Color.Black;<br /> }<br /> else if (nNodeCount == 0)<br /> {<br /> Node.Checked = false;<br /> Node.Collapse();<br /> Node.ForeColor = Color.Black;<br /> }<br /> else<br /> {<br /> Node.Checked = true;<br /> Node.ForeColor = Color.Gray;<br /> }<br /> }<br /> //當前節點選擇完後,判斷父節點的狀態,調用此方法遞迴。<br /> if (Node.Parent != null)<br /> SetNodeStyle(Node.Parent);<br /> } </p><p>

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.