【问题标题】:Key combination in VB.NETVB.NET 中的组合键
【发布时间】:2016-08-25 04:48:52
【问题描述】:

谁能帮我在 VB.NET 中读取多个按键。例如,我想读取 Control+P+H 组合键。我尝试了类似下面的代码但没有用... 在表单 Keydown 中

if e.control=true and e.keycode=keys.P and e.keycode=keys.H then
end if

【问题讨论】:

  • 没有简单的方法来检测一次按下多个非修饰键。你为什么要做这样的事情?我敢打赌,对于您实际尝试解决的问题,会有更好的解决方案。如果我错了,那么它将涉及处理多个事件并确定它们是按特定顺序引发的,或者进行多个 API 调用。
  • 控制键是修饰键。请在此处查看示例:stackoverflow.com/questions/4442805/vb-net-key-combination

标签: vb.net


【解决方案1】:

好的,在阅读了您的帖子之后,据我所知,这样的事情应该可以解决问题。

Public Class Form1
Dim keyCombo As New List(Of Keys)({Keys.ControlKey, Keys.H, Keys.P})
Dim currentKeys As New List(Of Keys)

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    currentKeys.Add(e.KeyCode)

    If currentKeys.Intersect(keyCombo).Count = keyCombo.Count Then
        MessageBox.Show("CTRL + H + P Has Been Pressed....")
        currentKeys.Clear()
    End If

End Sub

Private Sub Form1_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
    currentKeys.Remove(e.KeyCode)
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.KeyPreview = True
End Sub

End Class

如果您有任何问题,请告诉我,我会尽力回答,但是这应该会让您真正顺利上路:)

【讨论】:

  • 嗯,这是一个非常特殊的解决方案,我以前从未见过这样的事情。不错!
  • @VisualVincent Cheers :) 我一直在使用它而不是常规的 if e.keycode =
  • 我主要覆盖ProcessCmdKey 函数来处理组合键。我不知道为什么,但我比标准的 KeyDown/KeyPress/KeyUp 事件更喜欢它。
  • 就是这样:),我得看看它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 2012-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多