Vb.net 显示隐藏窗体的快捷键

Vb.net 显示隐藏窗体的快捷键,vb.net,keyboard-shortcuts,keyboard-events,Vb.net,Keyboard Shortcuts,Keyboard Events,我正在创建一个程序来管理本地网络,但我有一个小问题。 当表单开始时,它开始隐藏 我使用此代码来隐藏它: Protected Overrides Sub SetVisibleCore(ByVal value As Boolean) If Not Me.IsHandleCreated Then Me.CreateHandle() value = False End If MyBase.SetVisibleCore(value) End Sub

我正在创建一个程序来管理本地网络,但我有一个小问题。 当表单开始时,它开始隐藏

我使用此代码来隐藏它:

Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
    If Not Me.IsHandleCreated Then
        Me.CreateHandle()
        value = False
    End If
    MyBase.SetVisibleCore(value)
End Sub

例如,我希望在单击ALT+X时显示表单。

使用全局热键。这样,您就不必担心应用程序具有焦点。VB.Net的一个好例子如下:

总结。定义热键类:

Public Class Hotkey

#Region "Declarations - WinAPI, Hotkey constant and Modifier Enum"
        ''' <summary>
        ''' Declaration of winAPI function wrappers. The winAPI functions are used to register / unregister a hotkey
        ''' </summary>
        Public Declare Function RegisterHotKey Lib "user32" _
        (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Integer

        Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As IntPtr, ByVal id As Integer) As Integer

        Public Const WM_HOTKEY As Integer = &H312

        Enum KeyModifier
            None = 0
            Alt = &H1
            Control = &H2
            Shift = &H4
            Winkey = &H8
        End Enum 'This enum is just to make it easier to call the registerHotKey function: The modifier integer codes are replaced by a friendly "Alt","Shift" etc.
#End Region


#Region "Hotkey registration, unregistration and handling"
        Public Shared Sub registerHotkey(ByRef sourceForm As Form, ByVal triggerKey As String, ByVal modifier As KeyModifier)
            RegisterHotKey(sourceForm.Handle, 1, modifier, Asc(triggerKey.ToUpper))
        End Sub
        Public Shared Sub unregisterHotkeys(ByRef sourceForm As Form)
            UnregisterHotKey(sourceForm.Handle, 1)  'Remember to call unregisterHotkeys() when closing your application.
        End Sub
        Public Shared Sub handleHotKeyEvent(ByVal hotkeyID As IntPtr)
            MsgBox("The hotkey was pressed")
        End Sub
#End Region

    End Class
然后在表单的启动代码中注册热键:

Hotkey.RegisterHotKey(Me, "X", Hotkey.KeyModifier.Alt)
第一个参数是表单,第二个是要处理的键,第三个是修改器键。注册此热键后,它将触发
热键.handleHotKeyEvent
中的代码


然后,如果愿意,您可以使用某种回调来触发调用表单本身中的方法。

您可能应该在回答中包含该链接的相关代码,以防该链接将来断开。然后您可以将该链接列为源。@CodeMaverick好主意。沉迷于简明扼要,没有什么好的理由。我不能为代码赢得荣誉,但我很高兴它是合适的。可能是重复的
Hotkey.RegisterHotKey(Me, "X", Hotkey.KeyModifier.Alt)