gpt4 book ai didi

c# - TreeView私有(private)变量清除

转载 作者:行者123 更新时间:2023-12-03 22:02:03 24 4
gpt4 key购买 nike

我创建了一个私有(private)变量

private TreeView currentFullTree;

之后,我运行数据库并创建一个带有父节点、子节点、子节点的漂亮 TreeView 。这也很好用。创建 TreeView 后,我将私有(private)变量设置为

currentFullTree = treeView1;

这填充得非常好,我什至可以提取每个节点并重新创建树,就像它最初从不同的函数看起来一样。

现在这就是我迷路的地方。我创建了一个与创建 TreeView 或重新创建 TreeView 的位置分开的过滤/搜索功能。我只想显示与提供的文本匹配的节点。在执行搜索之前,我会执行treeView1.Nodes.Clear();,这样它看起来不错并且不困惑。

当我这样做时,它也会清空我创建的私有(private)变量!我不完全确定它为什么这样做。我在想,因为它只是一个 TreeView 变量,我可以将我的 TreeView 存储在那里并根据需要访问它。我不确定这是否是我忽略的愚蠢的事情,但感谢您的帮助。

谢谢, 蒂姆

最佳答案

您的currentFullTreetreeView1指向同一个对象,因为这些变量的值为reference type

要么必须保留整个树的副本,要么只保留树节点的副本。

private TreeView currentFullTree;
private List<TreeNode> treeNodes;

在清除树之前,只需将它们添加到列表中:

treeNodes.AddRange(treeView1.Nodes.OfType<TreeNode>());
treeView1.Nodes.Clear();

当您想显示完整的树(原始)时,请将节点从列表添加回 TreeView 。

关于c# - TreeView私有(private)变量清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32479615/

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