按钮的热键

时间:2011-07-12 17:12:31

标签: wpf vb.net

我如何为按钮制作热键,这会激活它,就像按下按钮一样?

请记住,我是编程新手。

4 个答案:

答案 0 :(得分:3)

假设你想要一个普通的alt-hotkey,在WPF中你只需在Xaml中用你想要的热键在下划线之前命名,例如:

<Button x:Name="MyButton">_Hotkey</Button>

按Alt + H将激活(意味着,单击)按钮。

答案 1 :(得分:2)

您可以在Windows中使用GetKeyState函数。 Windows函数必须由API引用,因为它们默认不包含在.NET Framework中。

假设您只需要检测一次击键,GetKeyState或GetAsyncKeyState可能是最好的。 GetKeyState将等待,直到按下某个特定键,然后获取该键的状态,并且GetAsyncKeyState将在调用该函数时获取键的状态。

GetKeyState的声明如下:

<DllImport("user32.dll", CharSet:=CharSet.Auto, ExactSpelling:=True)> _
Public Shared Function GetKeyState(ByVal virtualKeyCode As Integer) As Short
End Function

将它放在您希望使用该功能的类中。

该函数的virtualKeyCode参数是您尝试获取状态的键的键代码。您可以在此处查看所有虚拟键码的列表:http://msdn.microsoft.com/en-us/library/ms927178.aspx

GetAsyncKeyState声明与GetKeyState声明几乎相同。

<DllImport("user32.dll", CharSet:=CharSet.Auto, ExactSpelling:=True)> _
Public Shared Function GetAsyncKeyState(ByVal virtualKeyCode As Integer) As Short
End Function

使用GetKeyState和GetAsyncKeyState非常简单从Microsoft自己的文档(http://msdn.microsoft.com/en-us/library/ms646293(v=vs.85).aspx)中可以看出:

  

如果函数成功,则返回值指定自上次调用GetAsyncKeyState以来是否按下了键,以及该键当前是向上还是向下。如果设置了最高有效位,则键为关闭,如果设置了最低有效位,则在上一次调用GetAsyncKeyState之后按下该键。但是,你不应该依赖这最后的行为;有关更多信息,请参阅备注。

鉴于以上信息,这里是GetAsyncKeyState用法的一个例子:

Dim X As Integer = GetAsyncKeyState(KeyCodeHere)
If X = 1 Or X = -32767 Then
    'your keycode was pressed or released.
End If

如果您需要在用户按任何类型的键时收到通知,键盘挂钩会更合适。

最后,您还可以使用RegisterHotkey API在按下特定热键时通知Windows。

答案 2 :(得分:0)

Alt + Key是一种方式,就像上面发布的AresAvatar一样。

如果您想要更多可能性,可以使用KeyBinding

答案 3 :(得分:0)

您是在开发桌面还是网络? 对于桌面,请尝试 MY.COMPUTER.KEYBOARD。 ..... 封装了上面提到的很多(全部?)的GetKeyState。

像 AltKeyDow, ShiftKeyDown CtrlKeyDoen ScrollLock键 数字锁定