如何检测VB.Net中的键 [英] How to Detect Keys in VB.Net

查看:57
本文介绍了如何检测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 here ProcessCmdKey
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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆