我有一个树形视图,允许用户创建新的树节点。当他们创建树节点时,我会自动进入编辑模式。我想要做的是保存在“AfterLabelEdit”中编辑完成后给予树节点的名称。编辑后获取treenode文本
我发现的是,检查此方法中的标签将返回原始标签,因为在方法结束之前,它似乎没有提交给树。
编辑发生后,如何获得新标签?有没有办法强制更改提交在这种方法?
希望有道理!
我有一个树形视图,允许用户创建新的树节点。当他们创建树节点时,我会自动进入编辑模式。我想要做的是保存在“AfterLabelEdit”中编辑完成后给予树节点的名称。编辑后获取treenode文本
我发现的是,检查此方法中的标签将返回原始标签,因为在方法结束之前,它似乎没有提交给树。
编辑发生后,如何获得新标签?有没有办法强制更改提交在这种方法?
希望有道理!
直到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..
}
使用e.Label从System.Windows.Forms.NodeLabelEditEventArgsË
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
完美:与Control.BeginInvoke()方法做优雅让我的脑袋变得虚弱。干杯。 – Simon 2012-04-28 15:56:42
奇妙 - 不错,简单。 – Andy 2013-08-16 13:40:06