2

我的一个表单中有一个 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

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

4

1 回答 1

1

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

KeyPreview 从FalseTrue

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

于 2012-07-23T18:55:59.047 回答