HI, 我在C#app中有一个表单。在此表单上,我捕获了一个KeyDown事件Alt + U,它将打开第二个表单。在第二种形式中,我有一个toolStripButton,其中包含快捷键Alt + U(我用来打开表单的那个),它打印一个文档。现在,我的问题是当我打开第二个表单它会自动触发clicktripbutton的事件,因为它具有与我用来打开表单相同的快捷键。我怎样才能防止这种情况发生。
问候约翰
答案 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)
另一个简单的解决方案是从事件监听器中检查您的表单。您可以在第二个表单内的事件处理程序内返回。
再次不是最优雅的解决方案,但应该是一个不错的解决方案。