2

私が作成した 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 ではなく、選択した有効なノードです。

4

1 に答える 1

1

解決しました、バグを見つけました。

ノードを削除して再度追加することで、ノードを置き換える方法を見つけました。インデックスを要求すると、ツリー内の一般的なインデックスが得られると思いましたが、親ノードのみにインデックスが与えられるため、親ノードを使用して置き換えることができます。

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

ありがとう

于 2013-02-19T10:19:50.377 に答える