2012-04-28 12 views
2

後のTreeNodeのテキストを取得します。ツリーノードを作成すると、私は自動的に編集モードに入ります。私は何をしようとしていることは「AfterLabelEdit」の編集が終了した後にツリーノードに与えられた名前を保存しています。私が見つけた何は、私は、ユーザーが新しいツリーノードを作成することができ、ツリービューを持って編集

は、メソッドの終了後まで、ツリーにコミットしていないと思われるので、この方法でラベルをチェックすると、オリジナルのラベルを返すことです。

編集が行われた後どのように私は新しいラベルを得ることができますか?この方法で変更を強制的にコミットする方法はありますか?

希望は意味があります!

答えて

12

実際のノードテキストは、AfterLabelEventイベントが完了するまで変更されません。このイベントは、新しいラベルテキストをe.Labelプロパティに渡します。それがあなたが望むものです。

balky TreeViewイベントを処理する標準的な方法は、イベントが完了するまでアクションを遅延させることです。 - 私がしようとしていたまさに

private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { 
     this.BeginInvoke(new Action(() => afterAfterEdit(e.Node))); 
    } 
    private void afterAfterEdit(TreeNode node) { 
     string txt = node.Text; // Now it is updated 
     // etc.. 
    } 
+0

パーフェクト:エレガントなControl.BeginInvoke()メソッドで行います私の弱い頭の周りを取得します。乾杯。 – Simon

+0

素晴らしい - 素敵でシンプル。 – Andy

関連する問題