【问题标题】:vb.net key combinationvb.net 组合键
【发布时间】:2010-12-14 18:31:46
【问题描述】:

我正在尝试在我的 VB.net 应用程序中捕获两个按键,对于此示例 CTRL + B,下面的代码不起作用,但它适用于单个按键。我尝试将 keypreview 设置为 true,但这没有效果。

  Private Sub main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown
            If e.KeyCode = Keys.ControlKey And e.KeyCode = Keys.B Then
                MsgBox("CTRL + B Pressed !")
            End If
        End Sub
    End Class

谢谢

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    控制键是修饰键。此代码测试 Ctrl + B

    e.KeyCode = Keys.B AndAlso e.Modifiers = Keys.Control
    

    键码是B,但修饰符是Ctrl。

    您的代码 sn-p,已更新:

    Private Sub main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown
        If (e.KeyCode = Keys.B AndAlso e.Modifiers = Keys.Control) Then
            MsgBox("CTRL + B Pressed !")
        End If
    End Sub
    

    【讨论】:

    • 完美,以为会很简单!谢谢:)
    • 只是一个旁注,因为这对我不起作用......(这可能很明显)但是“KeyPreview”对于表单来说必须是正确的。不过,这个答案是我的解决办法。
    【解决方案2】:

    你还需要在修饰符后添加controlkey才能使其正常工作。

    Private Sub main_KeyDown(ByVal sender As Object, ByVal e As
      System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown
        If (e.KeyCode = Keys.B AndAlso e.Modifiers.ControlKey = Keys.Control) Then
            MsgBox("CTRL + B Pressed !")
        End If
    End Sub
    

    【讨论】:

      【解决方案3】:

      如果您查看documentation for KeyEventArgs,您会注意到该类公开了 ALT、CTRL 和修饰符的属性,这些属性允许您确定除了您感兴趣的主符号键之外是否还按下了这些键。

      Private Sub main_KeyDown(
              ByVal sender As Object, 
              ByVal e As System.Windows.Forms.KeyEventArgs) 
         Handles mybase.KeyDown
      
          If e.Control And e.KeyCode = Keys.B Then
              MsgBox("CTRL + B Pressed !")
          End If
      End Sub
      

      【讨论】:

        【解决方案4】:

        你可以用这个:

        If e.Control = True And e.KeyCode = Keys.B Then
                    'Do Something...
                End If
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-31
          相关资源
          最近更新 更多