5

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

我发现检查此方法中的标签会返回原始标签,因为在方法完成之前它似乎没有提交到树中。

编辑完成后如何获得新标签?有没有办法强制更改以这种方法提交?

希望这是有道理的!

4

2 回答 2

20

在 AfterLabelEvent 事件完成之前,实际的节点文本不会更改。该事件在 e.Label 属性中传递新的标签文本。那就是你想要的那个。

处理 balky TreeView 事件的标准技巧是延迟操作,直到事件完成。使用 Control.BeginInvoke() 方法优雅地完成:

    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..
    }
于 2012-04-28T15:51:25.183 回答
2

使用 System.Windows.Forms.NodeLabelEditEventArgs e 中的 e.Label

private void treeView1_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e)
{
    if (e.Label != null)
    {
     ........
    }
}

http://msdn.microsoft.com/en-us/library/system.windows.forms.nodelabelediteventargs.label.aspx

于 2013-02-13T22:02:25.633 回答