在Windows窗体控件(如listview和treeview)中,当某人编辑某个项目的标签时,然后按下“Escape”键,编辑结束但节点无论我写在里面什么都会留下。我想换取当我按Escape键时标签返回到原来的状态。我知道我必须在标签编辑之前,在“BeforeLabelEdit”事件中精确编辑标签。在“KeyPress”事件处理程序中,我不知道如何停止标签版本。我怎样才能做到这一点?如何取消标签使用退出键编辑并将标签返回到它是什么
更新
我发现,我认为不存在的方法,但现在的问题是其他。在版本标签操作过程中,Escape按键看起来似乎是难以理解的。
private void ObjectWithItems_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
if (treeViewDocXml.SelectedNode != null)
{
treeViewDocXml.SelectedNode.EndEdit(true);
}
}
}
默认情况下,它已经以这种方式工作,在编辑节点时按Escape可恢复旧文本。对于TreeView和ListView都是如此。我不得不猜测你在事件处理程序中搞砸了。不能说,你忘了粘贴一个代码片段。 – 2011-05-29 14:49:45
嗨@Hans也许我的尝试重现了我没有成功的问题。我甚至在编辑标签事件之前和之后删除了与事件处理程序的关联,令我惊讶的是不良行为依然存在。你知道一种在版本动作中获得按键的方法吗?找到一种方法来解决我的问题 – mjsr 2011-05-29 16:19:08
@Hans问题的另一个症状是当我按Escape键时它释放控制的焦点。可能是嵌入控件的问题的根源?....该控件嵌入在作为VSPackage扩展的一部分的ToolWindow中。在这种情况下,重点离开toolwindow并返回到IDE。这与标签版本的正常取消完全不同,该标签版本保持焦点以及通常以自由形式看到的编辑项目的选择。 – mjsr 2011-05-30 12:48:58