如何替换TreeView';s所选节点与新创建的节点

本文关键字:节点 新创建 创建 替换 何替换 TreeView | 更新日期: 2023-09-27 17:59:57

我创建了一个填充了Node的treeView,有几个节点类,都继承自treeNode。

当我编辑一个节点(使用GUI对话框)时,它可能会更改为不同的类,所以我在这个过程中创建了一个新节点,并试图用我的新节点替换所选的节点,但这不起作用,节点保持旧节点,不知道我做错了什么。

代码:

TreeNodeMission mission = (TreeNodeMission)treeView.SelectedNode;
TreeNodeMission newMission = ChangeMissionDialog(mission);
treeView.SelectedNode = newMission; // doesn't work

也尝试删除和添加它,也不起作用

index = treeView.Nodes.IndexOf(treeView.SelectedNode);  // index returns -1
treeView.Nodes.Remove(treeView.SelectedNode);
treeView.Nodes.Insert(index, newMission);

我做错了什么?

更新:treeView.SelectedNode不为null,它是我选择的有效节点。

如何替换TreeView';s所选节点与新创建的节点

解决了它,发现了错误。

我找到了一种替换节点的方法,删除并重新添加它。我想我认为请求索引会给我树中的一般索引,但它只给父节点提供索引,所以使用父节点,我可以替换它:

int index = treeView.SelectedNode.Index;
treeView.SelectedNode.Parent.Nodes.RemoveAt(index);
treeView.SelectedNode.Parent.Nodes.Insert(index, mission);
treeView.SelectedNode = mission;

感谢