2012-04-28 62 views
2

我有一个树形视图,允许用户创建新的树节点。当他们创建树节点时,我会自动进入编辑模式。我想要做的是保存在“AfterLabelEdit”中编辑完成后给予树节点的名称。编辑后获取treenode文本

我发现的是,检查此方法中的标签将返回原始标签,因为在方法结束之前,它似乎没有提交给树。

编辑发生后,如何获得新标签?有没有办法强制更改提交在这种方法?

希望有道理!

回答

12

直到AfterLabelEvent事件完成后,实际节点文本才会更改。该事件通过e.Label属性中的新标签文本。那是你想要的。

处理残酷的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 2012-04-28 15:56:42

+0

奇妙 - 不错,简单。 – Andy 2013-08-16 13:40:06