gpt4 book ai didi

.net - VB.NET中捕获功能键F1..F12

转载 作者:行者123 更新时间:2023-11-30 23:54:31 27 4
gpt4 key购买 nike

这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the help center .




8年前关闭。




我无法为我的应用程序捕获功能键 F1..F12。我能够捕获常规键和修饰符,例如 shift、ctrl、alt 等。

question推荐 KeyPreview = True ,但这似乎不适用于我的应用程序。我究竟做错了什么?

Private Sub Main_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.KeyPreview = True
AddHandler Me.KeyDown, AddressOf KeyDownsHandler
AddHandler Me.KeyUp, AddressOf KeyUpHandler
End Sub

Private Sub KeyUpHandler(ByVal o As Object, ByVal e As KeyEventArgs)
e.SuppressKeyPress = True
If e.KeyCode = Keys.F1 Then
txtMain.AppendText("F1 was pressed!" & Environment.NewLine)
End If
txtMain.AppendText( _
String.Format("'{0}' '{1}' '{2}' '{3}' {4}", e.Modifiers, e.KeyValue, e.KeyData, e.KeyCode, Environment.NewLine))
End Sub

Private Sub KeyDownHandler(ByVal o As Object, ByVal e As KeyEventArgs)
e.SuppressKeyPress = True
txtMain.AppendText( _
String.Format("'{0}' '{1}' '{2}' '{3}' {4}", e.Modifiers, e.KeyValue, e.KeyData, e.KeyCode, Environment.NewLine))
End Sub

最佳答案

为了捕获键(包括功能键),我开始使用这种模式,效果很好:

    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
Select Case keyData
Case Keys.F2
' Do something

Case Keys.F3
' Do more

Case Keys.Escape
' Crap

Case Else
Return MyBase.ProcessCmdKey(msg, keyData)

End Select

Return True
End Function

这将自动抑制您在 Select 中处理的每个键。陈述。如果你想使用 Shift、Alt 或 Ctrl 的组合,你只需要 Or他们。当然,这适用于非常低的 Form级别,使其独立于您在该表单上拥有的任何控件。如果您不知道,它也会触发奇怪的行为,例如焦点跳跃或行为不良的控件。

关于.net - VB.NET中捕获功能键F1..F12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4630825/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com