如何检测VB.Net中的键 [英] How to Detect Keys in VB.Net
本文介绍了如何检测VB.Net中的键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这句话对我不起作用...请帮助
当我输入e.Control时e.KeyChr什么都没有...如果使用e.keychr = Chrw(key.alt)然后再次出错。无法转换为chr ....请帮助...
公共 类 Form1
< System.Runtime.InteropServices.DllImport( user32.dll)> _
私有 共享 功能 GetAsyncKeyState(vKey As Keys) As 简短
结束 功能
私有 Sub Form1_KeyDown(发件人作为 对象,e As KeyEventArgs)句柄 我 .KeyDown
结束 Sub
私有 Sub Form1_KeyPress(发件人作为 对象,e As KeyPressEventArgs)句柄 我 .KeyPress
如果 e.Control 和 e.Alt 并且 e.Shift 然后
如果 Convert.ToBoolean(GetAsyncKeyState(Keys) .LShiftKey))然后
MsgBox( CTRL + ALT + LEFT SHIFT)
ElseIf Convert.ToBoolean(GetAsyncKeyState(Keys.RShiftKey))然后
MsgBox( CTRL + ALT + RIGHT SHIFT)
结束 如果
结束 如果
结束 Sub
结束 类
解决方案
On Load检查KEYPREVIEW是否设置为true
私有 Sub XXXX_Load( ByVal sender As System。 Object , ByVal e As System.EventArgs)句柄 MyBase .Load
Me .KeyPreview = True
结束 Sub
然后你只需实现一个keydown函数
私有 Sub XXXX_KeyDown( ByVal sender As 对象, ByVal e As System.Windows.Forms.KeyEventArgs)句柄 我 .KeyDown
如果 e.KeyCode = Keys.Space 然后
MsgBox( 空格按下按钮)
结束 如果
结束 Sub
适合我。
KeyPress不会给你全部只有按下Specialkeys才会触发帽子信息..
如果按SHIF + A,KeyPress只会给你Keys.A
最好在这里看看这个ProcessCmdKey
MSDN链接 [ ^ ]
http://social.msdn.microsoft.com/Forums/windows/en-US/6907cd57-4789-46ec-a5d5-e5b0975ff993/override-keypress-in-vbnet?forum=winforms [< a href =http://social.msdn.microsoft.com/Forums/windows/en-US/6907cd57-4789-46ec-a5d5-e5b0975ff993/override-keypress-in-vbnet?forum=winforms\"target =_ blank title =新窗口> ^ ]
您好,
试试这个:
选择表单并启用KeyPress事件,多数民众赞成它...
This statement is not working for me... please help
when I type e.Control only e.KeyChr is coming nothing else... If use e.keychr=Chrw(key.alt) then again it gives error. cannot convert to chr.... please help...
Public Class Form1
<System.Runtime.InteropServices.DllImport("user32.dll")> _
Private Shared Function GetAsyncKeyState(vKey As Keys) As Short
End Function
Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
End Sub
Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
If e.Control And e.Alt And e.Shift Then
If Convert.ToBoolean(GetAsyncKeyState(Keys.LShiftKey)) Then
MsgBox("CTRL + ALT + LEFT SHIFT")
ElseIf Convert.ToBoolean(GetAsyncKeyState(Keys.RShiftKey)) Then
MsgBox("CTRL + ALT + RIGHT SHIFT")
End If
End If
End Sub
End Class
解决方案
On Load check if your KEYPREVIEW is set to true
Private Sub XXXX_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.KeyPreview = True End Sub
Then you just implement a keydown function
Private Sub XXXX_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Space Then MsgBox("Space button pressed") End If End Sub
This works for me.
KeyPress won't give you all that info.. and simply isn't fired with only Specialkeys pressed
If you press "SHIF + A" KeyPress only gives you Keys.A
Better have a look at this one hereProcessCmdKey
MSDN Link[^]
http://social.msdn.microsoft.com/Forums/windows/en-US/6907cd57-4789-46ec-a5d5-e5b0975ff993/override-keypress-in-vbnet?forum=winforms[^]
Hi,
Try this :
select the form and enable the KeyPress event, thats it...
这篇关于如何检测VB.Net中的键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文