精华内容
下载资源
问答
  • 演示如何在keydown事件捕捉tab按键,不用拦截消息。 用vs2012编写
  • VB键盘事件详解

    千次阅读 2021-01-29 19:44:23
    “ 本节课程一起学习VB中的键盘事件。” 键盘事件的作用: 获得键盘输入信息,只有获得焦点的对象才能接受键盘事件。 键盘事件有三种: KeyPress、KeyDown、KeyUp KeyPress: 按了键盘的某键时触发,返回键盘的Ascii...

    “ 本节课程一起学习VB中的键盘事件。”

    键盘事件的作用:
    获得键盘输入信息,只有获得焦点的对象才能接受键盘事件。

    键盘事件有三种:
    KeyPress、KeyDown、KeyUp

    KeyPress:
    按了键盘的某键时触发,返回键盘的Ascii码值
    KeyDown:
    按下键盘的某键触发,返回键盘的直接状态,即该键的"扫瞄码"值
    KeyUp:
    释放键盘的某键触发,返回键盘的直接状态,即该键的"扫瞄码"值

    键盘事件触发顺序

    在按下键盘某键时,三种事件触发顺序是:
    KeyDown → KeyPress → KeyUp

    写个简单的代码来测试一下是不是这样的顺序。如下所示:

    按下键盘任意按键(除功能键)
    在这里插入图片描述

    代码如下:

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)    
      Print "KeyDown" 
    End Sub
    Private Sub Form_KeyPress(KeyAscii As Integer)    
      Print "KeyPress"
    End Sub
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)    
      Print "KeyUp"
    End Sub
    

    当窗体KeyPreview属性设置为True时,则首先触发窗体的键盘事件。

    键盘事件优先于控件事件发生。例如Text_Change事件,在键盘事件之后发生。

    键盘事件的形参:
    KeyPress事件有一个形参:KeyAscii
    KeyDown事件有两个形参:KeyCode、Shift
    KeyUp事件有两个形参:KeyCode、Shift

    形参含义解释
    1,KeyAscii
    该值接受系统自动传来的当前按键的Ascii码值。可以识别字母、数字、标点、Enter、BackSpace、Tab等,其它功能键不能识别。
    "A"键的KeyAscii值=65 "a"键的KeyAscii值=97

    常用KeyAscii值对照表

    图片

    2,KeyCode
    返回键盘的扫描码值。不区分大小写。"A"和"a"的KeyCode都是65

    3,Shift
    返回Shift、Ctrl、Alt三键的状态
    按下Shift时,Shift=1
    按下Ctrl时,Shift=2
    按下Alt时,Shift=4

    举例1:
    当用户按下键盘时,输出KeyAscii、KeyCode、Shift三个形参的值。

    图片

    代码如下:

    Private Sub Form_KeyPress(KeyAscii As Integer)     
      Print "KeyAscii值:" & KeyAscii;
    End Sub
    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)    
      Print "  KeyCode值:" & KeyCode; "  Shift值:" & Shift
    End Sub
    

    举例2:
    限制文本框中只能接收“0”~“9”的数字字符。

    Private Sub Text1_KeyPress(KeyAscii As Integer) 
        If KeyAscii < 48 Or KeyAscii > 57 Then 
            MsgBox "请输入0-9之间的数字"
            KeyAscii = 0
        End If
    End Sub
    
    展开全文
  • VB KeyDown

    2010-11-16 09:58:38
    VB Key Capture event You should take a look
  • 摘要:VB源码,系统相关,拦截键盘,拦截中文 VB 拦截键盘(可以拦截中文),子类化窗口,将myMSG的数据复制回MSGPoint所指的内存区域,以便能处理DLL发出的自定义消息,演示拦截WM_CHAR消息时如何处理中文,可获得万能...
  • 如果我们想要让对话框(子控件的父窗口)类来响应我们的按键消息,我们可以通过ClassWizard对WM_KEYDOWN消息进行响应,当程序运行后,我们按下键盘上的按键,但对话框不会有任何的反应。这是因为在对话框程序,...
  • .NET-控件keyDown和keyPress事件

    千次阅读 2017-04-27 10:21:41
    .NET-控件keyDown和keyPress事件

    步骤

    vs客户端app(KeyChar和KeyCord值,KeyDown/KeyPress事件区别)
    1. 首先将窗口属性KeyPreview设为true
    2. 添加KeyPress / KeyDown事件:

    KeyPress 和KeyDown 、KeyPress之间的区别

    KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等。但是不能捕获F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符

    KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)

    事件调用

            private void loginDialog_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    btnLogin_Click(null, null);
                }
            }
    展开全文
  • 在用VB编程时,我们可能需要通过对TextBox的KeyPress、KeyDown编程来实现限制输入,如只能输入数字、字母等,但是通过鼠标右键的粘贴功能却可以使你的代码功亏一篑,本例将演示如何通过调用API屏蔽TextBox的右键功能...
  • keydown()在键盘按键对应的键值,比较完整!
  • VB.Net窗体控件响应键盘回车等事件的实例 乐博网原创文章以下实例演示了VB.Net窗体控件Textbox1响应键盘回车事件Private Sub TextBox1_KeyDown(ByVal Sender As Object, ByVal e As System.Windows.Forms....

    VB.Net窗体控件响应键盘回车等事件的实例  乐博网原创文章

    以下实例演示了VB.Net窗体控件Textbox1响应键盘回车事件

    Private Sub TextBox1_KeyDown(ByVal Sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

    If e.KeyCode = Keys.Enter Then

    Msgbox("乐博网提示你:你按了回车啦")

    End If

    End Sub

    KeyCode中 Keys属性 可以有多种选择 当我们按到Keys.位置时 将会出现可选的属性,你可以选择响应其他键盘事件如用户按了F1或者ESC退出等。

    如图:

    2871834_1.jpg

    而当我们在选取属性的时候  会发现旁边有个小提示窗,如图:

    2871834_2.jpg

    我们能看到Enter 对应了一个数值 =13 ,那是否意味着也可以通过键盘事件的返回数值判断用户按了什么键?

    没错的,调整e的属性就可以实现这个转变,实例如下:

    Private Sub TextBox1_KeyDown(ByVal Sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

    If e.KeyValue = 13 Then   ' 13代表了Enter回车键的对应数值

    MsgBox("乐博网提示你:你按了回车啦")

    End If

    End Sub

    展开全文
  • VB键盘事件shift参数,vb*mask

    千次阅读 2016-11-26 12:43:09
    vbctrlmask,vbaltmask前瞻:1.shift参数值表 以及 vb*mask 值表2.ShiftDown=(Shift And vbShiftMask)>0如何理解正文:1.shift参数值表 以及 vb*mask 值表比如这两个函数的shift参数Private Sub Form_KeyUp(KeyCode...

    VB 键盘按键事件的shift参数以及vbshiftmask,vbctrlmask,vbaltmask

    前瞻:

    1.shift参数值表 以及 vb*mask 值表

    2.ShiftDown=(Shift And vbShiftMask)>0如何理解

    正文:

    1.shift参数值表 以及 vb*mask 值表

    比如这两个函数中的shift参数

    Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    
    End Sub
    
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    
    End Sub
    

    keycode参数很简单,它是指键盘字符的ascii码,或者用vb常量来表示,比如参数为A可以用65或asc(“A”),也可以用vbkeyA来表示。

    Shift参数表示在按下哪些转换键的同时按下的keycode键,参数表如下

        表一
    Shift值      意义
    0       没按下转换键
    1       按下了shift键
    2       按下了ctrl键
    3       同时按下了ctrl+shift键
    4       按下了alt键
    5       同时按下了alt+shift键
    6       同时按下了alt+ctrl键
    7       同时按下了ctrl+alt+shift键
    

    从这里可以看出,记忆这些数字是非常非常麻烦的,难道我要判断一下是否按下了ctrl+shift+A,还必须要记住Shift参数值是等于3的啊?

    所以呢,这里就有了另外3个vb常量,3个mask,如下

        表二
    vb常量        值       
    vbShiftMask   1     
    vbCtrlMask    2
    vbAltMask     4
    

    这三个常量是什么意思呢?其实它们就是个常数而已,比如vbShiftMask就是1而已。用这三个常量有什么好处呢?

    我们拿代码来对比一下,以下是在窗体上按下了shift+A的触发事件代码

    '直接使用Shift的值判断
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    
        If Shift = 1 And KeyCode = vbKeyA Then
            Print "shift+" & Chr(KeyCode)
        End If
    
    End Sub
    
    '使用vb常量做判断
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    
        If Shift = vbShiftMask And KeyCode = vbKeyA Then
            Print "shift+" & Chr(KeyCode)
        End If
    
    End Sub
    

    可以看出,使用vb常量来写,代码可读性变强,而且不必要去记忆那些数字。

    另外我们仔细观察表一可以看出,

    1代表shift,

    2代表ctrl,

    3代表shift+ctrl,这里有3=1+2

    4代表alt

    5代表alt+shift ,这里5=4+1

    6代表alt+ctrl ,这里6=4+2

    7代表alt+ctrl+shift, 这里7=4+2+1

    而3个mask的常量值恰恰是1,2,4,可以用加法来得到3,5,6,7,所以我们代码中对组合键的判断可以很容易的用3个mask常量来写

    比如按下ctrl+shift+A会触发窗体打印事件,两种写法代码如下

    '直接使用Shift参数值
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    
    If Shift = 3 And KeyCode = vbKeyA Then
        Print "ctrl+shift+" & Chr(KeyCode)
    End If
    
    End Sub
    
    '使用vb*mask常量
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    
    If Shift = vbCtrlMask + vbShiftMask And KeyCode = vbKeyA Then
        Print "ctrl+shift+" & Chr(KeyCode)
    End If
    
    End Sub
    

    代码中直接使用Shift参数值=3的话,谁知道3是什么东西啊,记起来这么麻烦,而使用vb*mask常量可读性就强的多了,vbctrlmask+vbshiftmask 程序员一看就知道应该是ctrl+shift一起按下。

    2.ShiftDown=(Shift And vbShiftMask)>0如何理解

    msdn上在讲到vb*mask的地方有这样一段话,博主把它手打到这里

        这些vb*mask常数用作位屏蔽。可以用来测试任何组合键。
    测试一个条件时,首先要将每个结果分配给一个临时整数变量,
    然后将shift与一个位屏蔽进行对比。
        如下例,可用And运算符和shift参数一起来测试条件是否大于0.
    条件满足说明该修正键被按下:
    shiftdown = (Shift And vbshiftmask) >0
    ctrldown = (shift and vbctrlmask ) >0
    if shiftdown and ctrldown then
        '如果shift和ctrl同时按下时执行的代码
    end if
    

    以上代码是怎么理解的呢?

    这里我们需要把shift值转化成二进制,然后做一下按位与运算才可以,以下是shift参数值转换成二进制后的情况

    Shift值      意义
    000     没按下转换键
    001     按下了shift键         
    010     按下了ctrl键        
    011     同时按下了ctrl+shift键
    100     按下了alt键
    101     同时按下了alt+shift键
    110     同时按下了alt+ctrl键
    111     同时按下了ctrl+alt+shift键
    

    同时给出vb*mask常量的二进制值

    vb常量        值       
    vbShiftMask 001     
    vbCtrlMask  010
    vbAltMask   100
    

    可以看出这个设计很巧妙,在这3个二进制位中,只要右起第一位是1则shift被按下,只要第二位是1则ctrl被按下,只要第三位是1则alt按下,看到这,小伙伴们有没有明白ShiftDown=(Shift And vbShiftMask)>0的含义呢?

    我们来分析一下:

    上式中 Shift是通过键盘传递过来的参数,假设是未知的XXX,每个X都代表0或1;vbshiftmask是001,好,问题来了

    当XXX And 001 >0 的时候,XXX有哪些情况呢?

    很明显,因为And是按位与运算,所以只有当XXX是XX1时,也就是001,011,101,111这四种情况下,XXX and 001 才会>0,而这四种情况分别对应shift,ctrl+shift,alt+shift,ctrl+alt+shit,都按下了shift键

    所以,ShiftDown=(Shift And vbShiftMask)>0中,ShiftDown的含义就是Shift键是否被按下。也就是说ShiftDown的值在shift键被按下了就是1,没被按下就是0。不管有没有按下ctrl和alt,只要按下了shift,shiftdown的值就是1

    所以说这样可以测试shift键是否被按下。

    同理 ctrldown=(shift + vbctrlmask)>0

    altdown=(shift + vbaltmask) > 0 也是一样分析

    结束

    博主在这里绕了一圈才明白过来,也希望可以帮到后来的小伙伴啦

    展开全文
  • Window.Event.KeyCode=13是什么意思?

    千次阅读 2012-04-03 09:36:17
    alert('ns浏览器键值:'+nkey+'\n'+'ie浏览器键值:'+iekey+'\n'+'实际键为'+realkey); } document.onkeydown = keyDown; if(ns4){ document.captureEvents(Event.KEYDOWN);} < /script> ...
  • VB 按下键盘时触发的KeyPress事件
  • [摘要:]在实际开发,许多人不喜欢使用TreeView,主要是由于默认的TreeView是“只读”的,不支持添加、删除、编辑、调整节点位置等操作。本文通过一个TVEdit工程说明如何解决这些问题。TreeView是最灵活的...
  • 全国计算机等级考试二级VB学习网具体参考:回答者:wahhltt - 举人 四级 1-14 16:14--------------------------------------------------------------------------------注册一下就可以看了!回答者:fanfan9810 - ...
  • vb 的对象,控件和事件说明

    热门讨论 2017-07-26 10:50:33
    VB中,所谓对象,就是VB程序系统提供给编程人员使用的各种“物体”,如:窗体(Form)、命令按(Command Button)、文本框(Text Box)等。 这些对象(Object) ,还可以由多个子对象构成。如电脑是一个对象,而...
  • Clear清除网格的内容 ClearStructure清除网格的结构(映射信息) CollapseAll折叠网格的某个特定的所有行 ExpandAll展开网格的某个特定的所有行 RemoveItem从网格清除一行 方法AddItem和RemoveItem可以用来向网格...
  • GraphicsWindow.BrushColor = "Blue" GraphicsWindow.MouseDown = OnMouseDown GraphicsWindow.KeyDown = OnKeyDown Sub OnKeyDown GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor() EndSub Sub ...
  • Private Const WM_KEYDOWN = &H100 Private Const WM_KEYUP = &H101 Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ...
  • 一、选择题第一章开启VB编程之旅1.(2011)31.在Visual Basic6.0集成开发环境,不能运行程序的操作是A.按“F5”键B.从“运行”菜单选择“启动”命令C.在工具栏单击“启动”按钮D.按“F6”键2.(2012)31.在...
  • VB期末考试试题及答案》由会员...2、在VB中,最主要的两种对象是窗体(form)和控件。3、工程是构成应用程序文件的集合。4、方法是VB提供的一种特殊子程序,用来完成一定的操作。5、浮点类型数据包括单精度型和___双...
  • 在应用程序,WH_KEYBOARD Hook用来监视WM_KEYDOWN and WM_KEYUP消息,这些消息通过GetMessage or PeekMessage function返回。可以使用这个Hook来监视输入到消息队列的键盘消息。 9、WH_KEYBOARD_LL Hook WH_...
  • 【学生】vb中的各种限制

    热门讨论 2019-08-12 18:35:56
    在学生信息管理系统会遇到输入姓名、学号、联系电话和日期的时候,这个时候为了方便使用,往往是需要限制一下文本框的输入信息的。 【正文】 限制文本框只能输入数字和删除键 Private Sub txtClassno_KeyPress...
  • VB测试键盘功能键,判断键盘上的Shift键、Ctrl键、Alt键是否被按下过,主要是根据键盘的返回值来判断出按下了什么键,下面来细看代码:  Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)  '...
  • 类别:VB.NET / 日期:2020-03-24 / 浏览:157 / 评论:0visualbasic(vb.net)按下键盘上某个按键事件触发(以回车键为例)的应用场景最近写程序遇到一个问题,几个查询条件+一个按钮,用户在选好(填好)查询条件后都...
  • VB期末考试试题(A卷)一、选择题1.要改变控件的宽度,应修改该控件的(B)属性。A、TOPB、widthC、LeftD、Height2.将命令按钮Command1设置为不可见,应修改该命令按钮的(A )属性。A、VisibleB、ValueC、CaptionD、...
  • VB常用控件介绍

    千次阅读 2018-02-16 16:24:30
    对于Anchor 属性,可以设定Top、Bottom、Right、Left 的任意几种,设置的方法是在属性窗口单击Anchor 属性右边的箭头,将会出现如图9-6 的窗口,通过它可设置Anchor 属性值。图9-6 选中变黑的方位即为...
  • VB全局热键(快捷键)

    2021-02-11 13:53:30
    '窗体代码: Private Declare Function GetActiveWindow Lib “user32” () As Long Private Declare Function GetAsyncKeyState Lib “user32” (ByVal vKey As Long)...Private Sub Form_KeyDown(KeyCode As Integer,
  • 2、在 VB中,最重要得两种东西为3、工程为组成应用步伐文件得(优选教诲资源共赢共享共进学年VB期末测验试题20**-20**A一、填空题1、 VB步伐计划得重要特点(1)为与(2);2、在 VB中,最重要得两种东西为3、工程为组成...
  • VB6.0学习笔记

    2021-08-25 08:22:20
    VB中MouseIcon属性设置自定义鼠标图标,MousePointer设置为99-Custom 简易版QQ登录 多窗口界面用form名称.show 来显示另一个窗体 使用Unload form窗体名称来从内存释放掉所占空间 模仿登录时候出现的进度条 ...
  • 小游戏vbVB编写小游戏】2020-11-20 05:12:57广告VB编写小游戏窗体放两个Label控件,一个Timer控件:Dim n As IntegerPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)Select Case KeyCodeCase ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,123
精华内容 849
关键字:

vb中keydown