我有一个 WinForms TreeView 控件,我想用它来根据当前选择的节点打开另一个窗体。我想在按住 Ctrl 键并单击节点时打开另一个窗体。
目前,如果我在 DoubleClick 处理程序中打开另一个表单(显然是双击该节点),它就会按照我想要的方式工作;但是,如果我使用 Click(或 MouseClick)处理程序并在按下 Control 键时打开另一个窗体,它将正确打开另一个窗体,但将焦点返回到原始窗体。
打开另一个表单后,如何保持焦点不返回到原始表单(我仍然想保持打开状态)?为什么 Click 和 DoubleClick 处理程序之间有不同的行为?
事件返回后,TreeView 夺回焦点。很烦人。您可以使用一个技巧:使用 Control.BeginInvoke 延迟事件的操作:
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
this.BeginInvoke(new TreeNodeMouseClickEventHandler(delayedClick), sender, e);
}
private void delayedClick(object sender, TreeNodeMouseClickEventArgs e) {
// Now do your thing...
}
一旦 TreeView 的所有事件完成运行并且您的程序进入空闲状态并重新进入消息循环,delayedClick 方法就会运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)