我是新来的,几乎到处都在寻找我的问题的答案 - 无济于事。我希望这里有人可以提供帮助。
我有一个 WinForm 应用程序,我使用 TreeView 在选定的根文件夹下显示文件夹结构。树视图已启用复选框。当我选中或取消选中 TreeNode 上的复选框时,该 TreeNode 下方的任何可见节点也会发生变化 - 到目前为止一切都很好。
问题是,当我进一步扩展节点时,新的可见节点不会更新到正确的状态。
我使用以下递归例程来执行更新:
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);
}
}
}
从此事件处理程序调用它:
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);
}
}
}
似乎递归函数只关心在执行时可见的 TreeNodes。
如果任何人都可以提供错误的线索,以及可以采取哪些措施来纠正它,将不胜感激。
提前致谢。
此致,
L.胡梅尔