使用Me.KeyDown无法检测到Ctrl + Shift + H.

时间:2014-03-24 10:28:14

标签: vb.net

Ctrl + Shift + H 期间没有作出反应的代码被按下:

Private Sub HideMode(ByVal sendeer As System.Object, ByVal e As KeyEventArgs) Handles Me.KeyDown
    Select Case CInt(e.KeyCode)
        Case Keys.ControlKey
            If e.Shift AndAlso e.KeyValue = Convert.ToInt32(Convert.ToChar(Keys.H)) Then
                MsgBox("Test hide function")
            End If
    End Select
End Sub

预期的结果是,按 Ctrl + Shift + H 后,msgbox将显示文字&#34 ;测试隐藏功能"

这里的错误是什么?

1 个答案:

答案 0 :(得分:5)

我没有理解为什么你尝试将KeyCode转换为整数,而使用Keys enum可以轻松完成同样的工作

Select Case e.KeyCode
    Case Keys.H
        If (e.Control AndAlso e.Shift) Then 
            MsgBox("Test hide function")
        End If
End Select

编辑嗯,WebBrowser控件是一个不同的野兽。您需要为它添加一个特定的KeyDown处理程序(除了在Focus处于其他控件时处理KeyDown的另一个处理程序)

Private Sub Browser_PreviewKeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles WebBrowser1.PreviewKeyDown
    Select Case e.KeyCode
        Case Keys.H
            If e.Shift AndAlso e.Control Then
                MsgBox("Test hide function")
            End If
    End Select
End Sub