我有一个树视图,我允许用户创建新的树节点。当他们创建树节点时,我会自动进入编辑模式。我想要做的是在“AfterLabelEdit”编辑完成后保存给予树节点的名称。
我发现检查此方法中的标签会返回原始标签,因为在方法完成之前,它似乎没有提交给树。
如何在编辑完成后获取新标签?有没有办法强制更改在此方法中提交?
希望有意义!
答案 0 :(得分:15)
直到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..
}
答案 1 :(得分: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