gpt4 book ai didi

c# - 如何删除未选择的 TreeView 节点

转载 作者:太空宇宙 更新时间:2023-11-03 12:19:01 25 4
gpt4 key购买 nike

如何删除未选择的 TreeView 节点。即使我循环两次,在所有未选择的树节点被删除之前,仍然需要点击按钮三次。这是什么:

    private void buttonShowSelected_Click(object sender, EventArgs e)
{
for (int i = 0; i < treeViewFilter.Nodes.Count; i++)
{
DeleteUnselectedNodes();
}
}


private void DeleteUnselectedNodes()
{
for (int i = 0; i < treeViewFilter.Nodes.Count; i++)
{
TreeNode aNode = treeViewFilter.Nodes[i];
treeViewFilter.SelectedNode = aNode.FirstNode;

if (!aNode.Checked)
{
treeViewFilter.Nodes.Remove(aNode);
}
}
}

最佳答案

您的循环不检查任何子节点。递归函数或堆栈可以工作:

var nodes = new Stack<TreeNode>(treeViewFilter.Nodes.Cast<TreeNode>());
while (nodes.Count > 0) {
var n = nodes.Pop();
if (!n.Checked) {
if (n.Parent != null) {
n.Parent.Nodes.Remove(n);
} else {
treeViewFilter.Nodes.Remove(n);
}
} else {
foreach (TreeNode tn in n.Nodes) {
nodes.Push(tn);
}
}
}

关于c# - 如何删除未选择的 TreeView 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48315353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com