如何用新创建的节点替换TreeView的选定节点

时间:2013-02-19 08:34:35

标签: c# winforms treeview

我有一个已创建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,它是我选择的有效节点。

1 个答案:

答案 0 :(得分:0)

解决了它,发现了这个错误。

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

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

由于