0

嗨,我在 C# 应用程序中有一个表单。在这个表单上,我捕获了一个 KeyDown 事件 Alt+U,它将打开第二个表单。在第二种形式中,我有一个带有快捷键 Alt+U 的 toolStripButton(与我用来打开表单的相同),它可以打印文档。现在,我的问题是当我打开第二个表单时,它会自动触发单击工具条按钮的事件,因为它与我用来打开表单的快捷键相同。我怎样才能防止这种情况发生。

问候约翰

4

4 回答 4

0

这并不能回答您的问题,但您确实应该考虑为这两个非常不同的操作制作两个不同的快捷键。拥有两个相同的快捷键来执行两个完全不同的操作是非常令人困惑的 IMO。

不过,要回答您的问题,我会在第二种形式上拥有一些属性,例如“ShouldRaise”之类的,并且仅在该标志为真时才在第二种形式中引发 Alt + U 事件。最初将其设置为 false,但随后在第一个表单中的 KeyUp 中将其设置为 true。

于 2009-06-18T13:11:34.690 回答
0

将一个人的快捷方式更改为其他人不是更容易吗?我同意 BFree 的观点,它不是最好的设计,对于 2 个完全不同的功能具有相同的快捷方式。所有快捷键/加速键都应该是唯一的。

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

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

于 2009-06-18T14:19:07.847 回答
0

在第二种形式中,您实际上有 ToolStripMenuItem 吗?(ToolStripButton 没有 ShortcutKeys 属性)。

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

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

似乎无法重现您的问题;稍微解释一下会有所帮助。

于 2009-06-18T14:38:28.167 回答
0

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

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

于 2009-06-18T14:41:20.373 回答