我在這裏是新手,幾乎在任何地方都爲我的問題尋找答案 - 無濟於事。我希望這裏有人能幫忙。帶有複選框的Winform TreeView - 只更新可見節點
我有一個WinForm應用程序,我使用TreeView在選定的根文件夾下顯示文件夾結構。樹視圖啓用了CheckBoxes。當我選中或取消選中TreeNode上的複選框時,TreeNode下方的任何可見節點都會發生更改 - 非常好。
問題是,當我進一步擴展節點時,則新的可見節點不是更新爲正確的狀態。
我用下面的遞歸程序來執行更新:
private void FileTreeView_AfterCheck(object sender, TreeViewCancelEventArgs e)
{
// The code only executes if the user caused the checked state to change.
if (e.Action == TreeViewAction.ByMouse)
{
if (e.Node.Nodes.Count > 0)
{
// Calls the CheckAllChildNodes method, passing in the current
// checked value of the TreeNode whose checked state changed.
CheckAllChildNodes(e.Node, e.Node.Checked);
}
}
}
看來,遞歸函數只在乎是可見樹節點:
private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
foreach (TreeNode node in treeNode.Nodes)
{
node.Checked = nodeChecked;
if (node.Nodes.Count > 0)
{
// If the current node has child nodes, call the
// CheckAllChildNodes method recursively.
CheckAllChildNodes(node, nodeChecked);
}
}
}
正是從這個事件處理函數調用在執行時。
如果任何人都可以給的什麼是錯的,什麼可以做,以糾正一個線索,我們將不勝感激。
在此先感謝。
最好的問候,
L.胡默爾
我不認爲OP在填充treeview的時候有任何問題。 –
你好, 謝謝你的建議。我試圖實現你所描述的方法,但是當我運行應用程序並嘗試執行行 我得到以下運行時錯誤: 出現「UnauthorizedAccessException是未處理」 「拒絕訪問路徑「C :\ Program Files \ Common Files \'被拒絕。「 我已經檢查了憑據,並且他們看起來確實無處不在。 –
對不起,我所說的這一行是「string [] directoriesArray = Directory.GetDirectories(directories);」 –