如何检测 Alt + Tab 键,然后关闭窗体?



我想在按下 Alt + Tab 时关闭我的表单。但是,表单不知何故没有注册组合键。

我尝试使用 Me.KeyUp 事件来检测键

Private Sub Menu_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
Select Case e.KeyData
Case (Keys.Alt + Keys.Tab)
Close()
End Select
End Sub

怎么做?

试试这个:正如我的评论Alt+Tab行不通。所以尝试其他类似Alt+Q.将此代码放在窗体的键下事件下。

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
If (e.KeyCode = Keys.Q AndAlso e.Modifiers = Keys.Alt) Then
Me.Close()
End If
End Sub

您需要将窗体的"设置键预览"设置为 True,以便它响应键事件,但由于 Alt + Tab 是一个特殊的窗口组合,因此不会触发键事件。

以这种方式尝试

Dim myval As Integer     'this is global variable declare
Private Sub Menu_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
Select Case e.KeyData
Case (Keys.Alt)
myval = 1 
Case (Keys.Tab)
If myval = 1  Then
Me.Close()
End If
End Select
End Sub

可能是我的语法不正确,如果有什么不对的地方,请编辑它。

我设法使用此方法解决此问题-

这通常是 ESC 密钥。一键按下。一个常见的。也许您想改为处理表单的停用事件。- 吉米

我使用表单停用事件来关闭它,因为 Alt+Tab 基本上是停用表单! (一种解决方法,因为 Alt+Tab 作为击键未以任何方式检测到,如 所述 最后两个答案。

我的最终代码看起来像这样 -

Private Sub Menu_Deactivate(sender As Object, e As EventArgs) Handles Me.Deactivate
If loaded = true Then
Close()
End If
End Sub

我必须检查是否加载(加载所有内容时我声明设置为 true 的布尔值) 确实如此,因为我的表单在加载时打开了另一个表单,无意中停用了主表单并关闭了它!

非常感谢大家对我的帮助!!

编辑:我需要澄清第二个表单总是在我的主表单后面,所以它从来没有真正点击过。我这样做是一种解决方法,以便在我的应用程序中出现 aero 模糊,而不会出现我在将其应用于主窗体时遇到的错误 - 它太轻了,因此文本不可读。因此,我设置了另一种形式来显示空气动力学模糊,并始终留在我的主要形式后面,我将其不透明度设置为 0.88。这让我可以很好地控制模糊的外观。

相关内容

最新更新