VB怎么实现键盘输入,新手问题

VB里面怎么能在TEXT里实现键盘输入啊,比如按键盘1 就显示1

简单的,你的按钮什么都是放在一个窗体上吧,
默认的应该是Form1
你可以在这个窗体的键盘事件里写入:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyNumpad0
Command1_Click ''这段就是按钮1点击,等价于你在窗体上点了一下按钮,把它改成你设置的那个代表"0"的按钮
Case vbKeyNumpad1
Command2_Click ''把它改成你设置的那个代表"1"的按钮
Case vbKeyNumpad2
''
Case vbKeyNumpad3
''
''后面一样
End Select
End Sub
Select Case (http://baike.baidu.com/view/1232785.htm) 如果不会用,可以用IF语句来判断,这个函数的KeyCode就是说你在这个窗口上按下的键位置是哪些,你可以在VB6里面按下F2然后输入keycode搜索,他会列出所有的keycode成员vbKeyNumpad0~9这些就是keycode的成员

还有关键的一点.因为你放了其他控件,所以接受键盘指令的不一定是Form1,你可以修改Form1的KeyPreview=true(在属性窗口里,也可以直接把这句话丢到Load里),这属性的用处就是,只要是在这个Form1里的控件接受到的键盘指令,全部优先处理Form1再去处理控件自己的,

还有不懂的可以留言问我追问

Command1_Click

这个是无效字符

另外我Command1 用的是数组 要怎么表示?

追答

Command1_Click是我写的
你就用你自己的那个
数组的话一样
如果是1就写 Command1_Click(0)
2就是Command1_Click(1) ''注意,这是看你第一个控件编号是0,如果是1你就自己修改下

其实你是数组,那这语句可以简短一下,因为vbKeyNumpad0~9其实就是96~105(这10个常量的值)
你可以写成
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode>=96 and KeyCode=48 and KeyCode<=57 then ''因为键盘上还有一组0~9 所以需要的话再加上这段
Command1_Click(KeyCode-48)''同上面一样,数组的第一个编号是0
End If
End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-14
代码如下:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyNumpad0
Command1_Click '这段就是按钮1点击,等价于你在窗体上点了一下按钮,把它改成你设置的那个代表"0"的按钮
Case vbKeyNumpad1
Command2_Click '把它改成你设置的那个代表"1"的按钮
Case vbKeyNumpad2
''
Case vbKeyNumpad3
....
End Select
End Sub
第2个回答  2011-03-25
我同意前面的朋友的建议-考虑不在界面上放置接受焦点的控件(或者设置成不接受焦点),以便实施键盘事件获取。例如可通过Form_Keypress事件获取用户所按按键的码,然后根据该码改变TEXT(当然可以是其它控件)的内容。代码如:
Private Sub Form_KeyPress(KeyAscii As Integer)
Text1.Text = Text1.Text + Chr(KeyAscii)
End Sub
第3个回答  2011-03-24
首先,在窗体上画一个textbox ,按F5运行工程,然后鼠标在text里面点一下,然后按键盘就可以了!追问

晕,不是这个问题
我指的是 编个计算器,上面有0-9几个按钮,我想运行的时候键盘输入1-9几个数字和按那几个按钮效果一样

追答

……其实我写个计算器,建议不要在界面放置能获得鼠标光标的控件,比如text,你如果用text显示结果,那么很容易让text被鼠标点中,这样就无法监测键盘的按下时间,当然也有解决办法,不过我觉得用label代替text比较好,你可以把label设置成和text一样的样子

第4个回答  2011-03-25
如果是计算器的话,你搞个计时器,让焦点一直在text1里,+—*/的话,用2楼的方法,简单
相似回答