• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:TreeViewのノードの編集結果が反映されない)

TreeViewのノードの編集結果が反映されない

このQ&Aのポイント
  • C#3.5を使用しています。treeView1にはnameが「ノード1」のノードがセットされていて、ノードを編集したと思ったのですがノードのテキストは変更されませんでした。
  • treeView1.SelectedNode.Text = newNode.Text;を入れるとテキストは変更されるのですが、ノードそのものを入れ替える(編集する)にはどのように記述すれば良いのでしょうか?
  • TreeViewのノードの編集結果が反映されない問題について、C#3.5を使用している場合に起こる現象です。treeView1にはnameが「ノード1」のノードがセットされていて、ノードを編集したと思ったのですがノードのテキストは変更されませんでした。ノードそのものを入れ替えるにはどのように記述すれば良いのか、解決方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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); }

takagoo100
質問者

お礼

ご返答ありがとうございます。 なるほど、選択してる場所を探して入れ替えるわけですか。 そのやり方できました。ありがとうございます。

関連するQ&A