怎麼讓所有子節點被選中,父節點自動選中 TreeView

  • 作者:由 匿名使用者 發表于 舞蹈
  • 2022-07-29

怎麼讓所有子節點被選中,父節點自動選中 TreeView空白的回憶2020.10.25 回答

展開全部

程式碼就不貼了,給你個解決的方法,判斷節點的選中狀態,然後獲取該節點的父節點下的所有子節點,判斷是否所有子節點都選中了,若是的話就選中父節點

怎麼讓所有子節點被選中,父節點自動選中 TreeView匿名使用者2018.02.12 回答

展開全部

如果父結點已經選中了的話,可以直接透過資料庫等方法列舉子結點為,若不需要顯式的在TVW控制元件中表示這個選中的話,直接將這種操作視為子結點全選即可。

怎麼讓所有子節點被選中,父節點自動選中 TreeView匿名使用者2011.06.11 回答

展開全部

遍歷父節點的所有子節點

怎麼讓所有子節點被選中,父節點自動選中 TreeView匿名使用者2011.06.11 回答

展開全部

//設定標誌,防止死迴圈

bool check = false;

//節點勾選後事件,如果更改某一節點狀態會自動觸發,所以在後面的方法中無需遞迴

private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)

{

if(check==false)

setchild(e。Node);

setparent(e。Node);

check = false;

}

//設定子節點狀態

private void setchild(TreeNode node)

{

foreach (TreeNode child in node。Nodes)

{

child。Checked = node。Checked;

}

check = true;

}

//設定父節點狀態

private void setparent(TreeNode node)

{

if (node。Parent != null)

{

//如果當前節點狀態為勾選,則需要所有兄弟節點都勾選才能勾選父節點

if (node。Checked)

foreach (TreeNode brother in node。Parent。Nodes)

{

if (brother。Checked == false)

return;

}

node。Parent。Checked = node。Checked;

}

}

原理:先遞迴到最底層節點,由checkChild()勾選上最底層節點,然後改變check狀態,再checkParent()勾選最底層的上一層節點,雖然觸發勾選事件,但是check狀態改變了,不能再向下勾選,只能向上遞迴,從而防止了死迴圈。

普通方式死迴圈原理:遞迴到最底層後,勾選上最底層,然後勾選最底層的上一層,但是會自動觸發勾選事件,再次遞迴到最底層,因此造成死迴圈。

怎麼讓所有子節點被選中,父節點自動選中 TreeView匿名2011.06.11 回答

這樣吧,還是直接給你程式碼

if (treeview1。selectednode!=null && treeview1。selectednode。parent!=null)

{

treenode pn=treeview1。selectednode。parent;

treeview1。selectednode = pn;

}

Top