2017-05-18 10 views
0

enter image description hereC#ツリービューの子ノードを削除せずに、選択したノードのテキストを置き換えるにはどうすればいいですか?

私は3階層のツリービューノードを持っています。現在、追加機能、削除機能があります。挿入したノードを削除せずに、変更したテキストを選択したノードに追加するだけです。

私はこのフォーラムと検索エンジンの結果からいくつかの質問を見ましたが、解決策は私が必要とするものとは異なっています。私が見つけた

ソリューション: -

  1. 、選択したノードのインデックスを取得し、それを削除し、選択されたインデックスノードに新しいを挿入します。 On here

  2. ループ内のループビューノード、選択したノード文字列を検索して新しい文字列に置き換えます。 hereにあります。

なぜ私は上記の考えに従うことができないのですか?

  1. 選択したノードが最初に削除された場合は削除されますか?
  2. 同じテキストを持つノードが2つ以上ある場合は、再帰的ループで置き換える必要があります。

親と現在の選択インデックスです。したがって、それは2つの階層のインデックスになります。

indxparent.Text = TreeView1.SelectedNode.Parent.Index.ToString() ?? "-"; 
indxchild.Text = TreeView1.SelectedNode.Index.ToString() ?? "-"; 

選択したノード/選択されたノードのインデックスに新しいテキストを修正するプログラミング方法はありますか?
方法1:

string newdata = "This is new information data"; 
TreeView1.LabelEdit = true; 
if (!TreeView1.SelectedNode.IsEditing) 
{ 
    TreeView1.SelectedNode.BeginEdit(); 
    TreeView1.SelectedNode.Text = newdata; 
    TreeView1.SelectedNode.EndEdit(false); 
} 

方法2:Kempethは彼の解決策を提案する前に、コードの使用作業

string newdata = "This is new information data"; 
TreeNode node = new TreeNode(newdata); 
TreeView1.SelectedNode.Parent.Nodes.RemoveAt(IndexOfSelectedNode); 
TreeView1.SelectedNode.Parent.Nodes.Insert(IndexOfSelectedNode, node); 
TreeView1.SelectedNode = node; 

答えて

2

あなたは単にSelectedNodeTextプロパティを設定しようとしたことがありますか?

TreeView1.SelectedNode.Text = TreeView1.SelectedNode.Text + " MAGIC!" 
+0

真剣に男。私はこのようなものを試してみました。正確にはこれに似ていませんが、おそらく失敗します。だから、私は仕事の半日のためにここに投稿する前に、答えを見つけてストレスを感じています。 BeginEditを使用して検索するだけで、必要なものを削除しないようにすることもできます。 文字列newdata = "新しい情報データ"; Treeview1.LabelEdit = true; if(!Treeview1.SelectedNode.IsEditing) { Treeview1.SelectedNode.BeginEdit(); Treeview1.SelectedNode.Text = newdata; Treeview1.SelectedNode.EndEdit(false); } あなたのソリューションは、直接ヒット..ありがとう@ケンペス – Luiey

関連する問題