使用转义键失去对ToolStripMainMenu项目的关注?

时间:2012-07-18 15:26:49

标签: .net vb.net menustrip

我的一个表单中有一个MenuStrip,以便用户有一个菜单栏,可以从中选择各种内容。为方便起见,有些还有映射到它们的快捷键。我还通过覆盖MenuStrip的渲染器来实现所有项目及其子菜单的自定义外观。

当我使用带有下拉列表的项目的快捷键时,会出现问题。当列表关闭时,如果我按下转义键,列表将按预期关闭,但仍然选择父项。它仍然突出显示,它仍然有焦点。再次按退出键不会执行任何操作。我认为我自己想要实现这种行为?如果是这样,怎么样? ToolStripMenuItems似乎没有任何函数调用会告诉它取消选择。

编辑:如果有人好奇,我正在寻找表单的KeyDown事件中的转义键。我用它来退出表格。这是代码:

Private Sub myForm_KeyDown(sender as Object, e As KeyEventArgs) Handles Me.KeyDown
   If e.KeyCode = Keys.Escape Then
      Me.Close()
      e.Handled = True
   End If
End Sub

但即使我发表评论,我仍然会得到上述行为。

1 个答案:

答案 0 :(得分:1)

默认情况下,表单的KeyDown事件中的代码只会在表单本身具有焦点时触发。无论对表单的重点是什么,为了触发这些事件,您必须更改表单的以下属性:

KeyPreview从 False True

这会导致窗体的“Key”相关事件在焦点位于窗体上的任何控件时触发。