阻止KeyDown事件处理到下一个表单

时间:2009-06-18 13:02:31

标签: c# keydown

HI, 我在C#app中有一个表单。在此表单上,我捕获了一个KeyDown事件Alt + U,它将打开第二个表单。在第二种形式中,我有一个toolStripButton,其中包含快捷键Alt + U(我用来打开表单的那个),它打印一个文档。现在,我的问题是当我打开第二个表单它会自动触发clicktripbutton的事件,因为它具有与我用来打开表单相同的快捷键。我怎样才能防止这种情况发生。

问候约翰

4 个答案:

答案 0 :(得分:0)

这不能回答你的问题,但你真的应该考虑为这两种截然不同的动作制作两个不同的快捷键。拥有两个相同的快捷键可以完成两个完全不同的动作,这让IMO非常困惑。

要回答你的问题,我会在第二个表单上有一些属性,如“ShouldRaise”或其他东西,如果该标志为真,则只在第二个表单中引发Alt + U事件。最初将它设置为false,但是在第一种形式的KeyUp中,将其设置为true。

答案 1 :(得分:0)

将一个快捷方式更改为其他内容会不会更容易?我同意BFree它不是最好的设计有两个完全不同的功能相同的快捷方式。所有快捷键/加速键都应该是唯一的。

为什么不将表单页面的快捷方式更改为:

Ctrl + Right(转到下一页) Ctrl + Left(转到上一页)

答案 2 :(得分:0)

在第二个表单上你实际上有一个ToolStripMenuItem吗? (ToolStripButton没有ShortcutKeys属性。)

当用户在父表单上按Alt-U时,您是否实例化新表单?

您是否检查了打印文档的处理程序上的发件人对象,看它是否是父表单?

似乎无法重现你的问题;一点点解释会有所帮助。

答案 3 :(得分:0)

另一个简单的解决方案是从事件监听器中检查您的表单。您可以在第二个表单内的事件处理程序内返回。

再次不是最优雅的解决方案,但应该是一个不错的解决方案。