VB中也能为TextBox创建快捷键

编程爱好者

VB中使用控件有一种方便的方法是利用快捷键来完成,但有时用文本框时却享受不到这种便利,为什么呢?

添加在窗体上的控件均在其Tabindex属性中记载了加载顺序,程序运行时焦点按Tabindex属性规定的顺序在控件间跳转。而为了简化操作,可在VB中为任何具有caption的属性的控件创建快捷键,这通过在caption属性中将想作为快捷键的字母前加&号实现。但有一个问题值得注意,类似文本框这样的控件无caption这样的属性,所以VB中的文本框没有快捷键,有时为了输入数据,须用鼠标点一下,如果控件多,不用鼠标就要多次按Tab键,那能不能给它设一个与命令按钮类似的快捷键呢?答案是肯定的。

方法一:偷天换日法

用可以设置快捷键的控件来设上快捷键,但最终的焦点要放在文本框上。为lable创建快捷键,标签Tabindex 属性设置比文本框小1,又因为label不能接收按点,焦点会自动跳至文本框。这相当于为文本框创建了快捷键。具体步骤如下:

(1)首先绘制标签,再绘制文本框。或随意绘制各种控制,将标签Tabindex属性设置得比文本框小1;

(2)在标签的caption属性中使用“&”号设定快捷键,&T表示“Alt+T”组合键为快捷键。

这样就相当于为文本框设定了快捷键,当你按下标签框的快捷键时,焦点就会跳至文本框上。

方法二:编程转化法

这种方法是思路是将焦点从其他控件转到文本框上。假设窗体上有一个命令按钮command1和一个文本框,则焦点在命令按钮上时,只要用下面的代码就可以完成焦点转化了!

Private Sub Command1_KeyPress(KeyAscii As Integer)

If KeyAscii = 97 Then'97代表字母a

Text1.SetFocus

End If

End Sub

还有一种更通用的办法,将代码加给窗体的keyDown事件,但这要有个前提,Form的KeyPreview属性设为True。

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

'将KeyPreview设为True

If Shift = 4 And KeyCode = 65 Then 'ALT+a

Text1.SetFocus

End If

End Sub

注:以上代码在VB60、Win XP下调试通过。

这样,字母a、“Alt+a”和“Alt+T”就成了转向文本框的快捷键。