- ベストアンサー
TreeViewのノードの編集結果が反映されない
- C#3.5を使用しています。treeView1にはnameが「ノード1」のノードがセットされていて、ノードを編集したと思ったのですがノードのテキストは変更されませんでした。
- treeView1.SelectedNode.Text = newNode.Text;を入れるとテキストは変更されるのですが、ノードそのものを入れ替える(編集する)にはどのように記述すれば良いのでしょうか?
- TreeViewのノードの編集結果が反映されない問題について、C#3.5を使用している場合に起こる現象です。treeView1にはnameが「ノード1」のノードがセットされていて、ノードを編集したと思ったのですがノードのテキストは変更されませんでした。ノードそのものを入れ替えるにはどのように記述すれば良いのか、解決方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 新規ノードを追加した後、選択ノードを引っこ抜かないといけないのではないでしょうか。 新規ノードを追加する際、ツリーの形状を辿って適切な位置に入れないといけないので、再帰を使って話を進めた方が楽かもしれません。 速度面等、色々とアラはあると思いますが、以下参考程度に。 private bool SwapTreeNode(TreeNodeCollection tvnc, TreeNode selectedNode, TreeNode newNode) { for (int n = 0; n < tvnc.Count; ++n) { //選択ノードを発見 if (tvnc[n] == selectedNode) { //新規ノードを追加 tvnc.Insert(n, newNode); return true; } //+1階層下へ再帰する if (SwapTreeNode(tvnc[n].Nodes, selectedNode, newNode)) return true; } return false; } private void ???() { //新規ノード作成 TreeNode newNode = new TreeNode(treeView1.SelectedNode.Name); newNode.Text = "ノードテキスト変更"; //ツリー形状を辿って選択ノードの位置を見つけて新規ノードを追加 SwapTreeNode(treeView.Nodes, treeView.SelectedNode, newNode); //選択ノードを引っこ抜く treeView.SelectedNode.Remove(); //新規ノードを選択する treeView.SelectedNode = newNode; //確認 MessageBox.Show(treeView1.SelectedNode.Text); }
お礼
ご返答ありがとうございます。 なるほど、選択してる場所を探して入れ替えるわけですか。 そのやり方できました。ありがとうございます。