C# 如何替换TreeView';用新创建的节点替换选定的节点

C# 如何替换TreeView';用新创建的节点替换选定的节点,c#,winforms,treeview,C#,Winforms,Treeview,我用我创建的节点填充了一个树视图,有几个节点类,都是从treeNode继承的 当我编辑一个节点(使用GUI对话框)时,它可能会更改为不同的类,因此我在该过程中创建了一个新节点,并尝试用我的新节点替换所选节点,但这不起作用,该节点仍然是旧节点,无法找出我做错了什么 代码: 也尝试过删除和添加它,但也不起作用 index = treeView.Nodes.IndexOf(treeView.SelectedNode); // index returns -1 treeView.Nodes.Remov

我用我创建的节点填充了一个树视图,有几个节点类,都是从treeNode继承的

当我编辑一个节点(使用GUI对话框)时,它可能会更改为不同的类,因此我在该过程中创建了一个新节点,并尝试用我的新节点替换所选节点,但这不起作用,该节点仍然是旧节点,无法找出我做错了什么

代码:

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

index = treeView.Nodes.IndexOf(treeView.SelectedNode);  // index returns -1
treeView.Nodes.Remove(treeView.SelectedNode);
treeView.Nodes.Insert(index, newMission);
我做错了什么

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

解决了它,找到了错误

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

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

谢谢

您确定SelectedNode不为空吗?如果
index
返回
-1
,则表示未选择任何节点,因此与之相关的任何代码都将无法工作。它是什么类型的应用程序?WPF或Winforms或其他什么?如果是WPF,您选择的节点是否正在通知?@JordyvanEijk:由于问题在
winforms
中被标记,我强烈猜测它不是WPF树视图;)@Aschratt它被重新标记:)在它不是winforms之前
int index = treeView.SelectedNode.Index;
treeView.SelectedNode.Parent.Nodes.RemoveAt(index);
treeView.SelectedNode.Parent.Nodes.Insert(index, mission);
treeView.SelectedNode = mission;