VB编程的键盘控制
- 格式:pdf
- 大小:137.11 KB
- 文档页数:3
‘这是程序的核心代码,其他一些辅助的模块代码,请进VB源代码相关Private Sub Command1_Click()If (Text1.Text Like "[a-z]" Or Text1.Text Like "[0-9]" Or Text1.Text = "ENTER" Or Text1.Text = "enter" Or Text1.Text = "Enter") And Text2.Text <> "" ThenTimer1.Enabled = TrueText1.Enabled = FalseText2.Enabled = FalseCommand1.Enabled = FalseCommand2.Enabled = TrueElse: MsgBox "请仔细阅读提示,然后再输入!", , "提示"End IfEnd SubPrivate Sub Label4_Click()ShellExecute 0, "open", "/u/2461456205", vbNullString, vbNullString, 3 End SubPrivate Sub Text1_Change()Text1.MaxLength = 5End SubPrivate Sub Text2_KeyPress(KeyAscii As Integer)If KeyAscii <> 8 And KeyAscii < Asc(0) Or KeyAscii > Asc(9) Then KeyAscii = 0End SubPrivate Sub Command2_Click()Timer1.Enabled = FalseCommand1.Enabled = TrueCommand2.Enabled = FalseText1.Enabled = TrueText2.Enabled = TrueEnd SubPrivate Sub Form_Load()If Dir(App.Path & "\skin.urf") <> "" ThenDim bRes As BooleanbRes = SkinStart(App.Path & "\skin.urf", 2, "RQPJNW0N0V2QRMAP1KXVBHHDUVVQGUXR", 1, 0, 0)End IfLabel3.Caption = "1、键值:[小写a-z][0-9]" & vbCrLf & " [enter][ENTER][Enter]" & vbCrLf & "2、次数:只能是数字" & vbCrLf & "3、操作:最小化时会自动退至托盘后台执行!"Call CreatTray(Me, "显示/隐藏界面", "", "", 1)Timer1.Enabled = FalseCommand2.Enabled = FalseEnd SubPrivate Sub timer1_timer()On Error Resume NextIf Text1.Text = "a" ThenIf GetAsyncKeyState(vbKeyA) Then Dim i As IntegerFor i = 1 To Text2.TextSendKeys "{a}"Next iEnd IfElseIf Text1.Text = "b" ThenIf GetAsyncKeyState(vbKeyB) Then For i = 1 To Text2.TextSendKeys "{b}"Next iEnd IfElseIf Text1.Text = "c" ThenIf GetAsyncKeyState(vbKeyC) Then For i = 1 To Text2.TextSendKeys "{c}"Next iEnd IfElseIf Text1.Text = "d" ThenIf GetAsyncKeyState(vbKeyD) Then For i = 1 To Text2.TextSendKeys "{d}"Next iEnd IfElseIf Text1.Text = "e" ThenIf GetAsyncKeyState(vbKeyE) Then For i = 1 To Text2.TextSendKeys "{e}"Next iEnd IfElseIf Text1.Text = "f" ThenIf GetAsyncKeyState(vbKeyF) Then For i = 1 To Text2.TextSendKeys "{f}"Next iEnd IfElseIf Text1.Text = "g" ThenIf GetAsyncKeyState(vbKeyG) Then For i = 1 To Text2.TextSendKeys "{g}"Next iEnd IfElseIf Text1.Text = "h" ThenIf GetAsyncKeyState(vbKeyH) Then For i = 1 To Text2.TextSendKeys "{h}"Next iEnd IfElseIf Text1.Text = "i" ThenIf GetAsyncKeyState(vbKeyI) Then For i = 1 To Text2.TextSendKeys "{i}"Next iEnd IfElseIf Text1.Text = "j" ThenIf GetAsyncKeyState(vbKeyJ) Then For i = 1 To Text2.TextSendKeys "{j}"Next iEnd IfElseIf Text1.Text = "k" ThenIf GetAsyncKeyState(vbKeyK) Then For i = 1 To Text2.TextSendKeys "{k}"Next iEnd IfElseIf Text1.Text = "l" ThenIf GetAsyncKeyState(vbKeyL) Then For i = 1 To Text2.TextSendKeys "{l}"Next iEnd IfElseIf Text1.Text = "m" ThenIf GetAsyncKeyState(vbKeyM) Then For i = 1 To Text2.TextSendKeys "{m}"Next iEnd IfElseIf Text1.Text = "n" ThenIf GetAsyncKeyState(vbKeyN) Then For i = 1 To Text2.TextSendKeys "{n}"Next iEnd IfElseIf Text1.Text = "o" ThenIf GetAsyncKeyState(vbKeyO) Then For i = 1 To Text2.TextSendKeys "{o}"Next iEnd IfElseIf Text1.Text = "p" ThenIf GetAsyncKeyState(vbKeyP) Then For i = 1 To Text2.TextSendKeys "{p}"Next iEnd IfElseIf Text1.Text = "q" ThenIf GetAsyncKeyState(vbKeyQ) Then For i = 1 To Text2.TextSendKeys "{q}"Next iEnd IfElseIf Text1.Text = "r" ThenIf GetAsyncKeyState(vbKeyR) Then For i = 1 To Text2.TextSendKeys "{r}"Next iEnd IfElseIf Text1.Text = "s" ThenIf GetAsyncKeyState(vbKeyS) Then For i = 1 To Text2.TextSendKeys "{s}"Next iEnd IfElseIf Text1.Text = "t" ThenIf GetAsyncKeyState(vbKeyT) Then For i = 1 To Text2.TextSendKeys "{t}"Next iEnd IfElseIf Text1.Text = "u" ThenIf GetAsyncKeyState(vbKeyU) Then For i = 1 To Text2.TextSendKeys "{u}"Next iEnd IfElseIf Text1.Text = "v" ThenIf GetAsyncKeyState(vbKeyV) Then For i = 1 To Text2.TextSendKeys "{v}"Next iEnd IfElseIf Text1.Text = "w" ThenIf GetAsyncKeyState(vbKeyW) Then For i = 1 To Text2.TextSendKeys "{w}"Next iEnd IfElseIf Text1.Text = "x" ThenIf GetAsyncKeyState(vbKeyX) Then For i = 1 To Text2.TextSendKeys "{x}"Next iEnd IfElseIf Text1.Text = "y" ThenIf GetAsyncKeyState(vbKeyY) Then For i = 1 To Text2.TextSendKeys "{y}"Next iEnd IfElseIf Text1.Text = "z" ThenIf GetAsyncKeyState(vbKeyZ) Then For i = 1 To Text2.TextSendKeys "{z}"Next iEnd IfElseIf Text1.Text = "1" ThenIf GetAsyncKeyState(vbKey1) Then For i = 1 To Text2.TextSendKeys "{1}"Next iEnd IfElseIf Text1.Text = "2" ThenIf GetAsyncKeyState(vbKey2) Then For i = 1 To Text2.TextSendKeys "{2}"Next iEnd IfElseIf Text1.Text = "3" ThenIf GetAsyncKeyState(vbKey3) Then For i = 1 To Text2.TextSendKeys "{3}"Next iEnd IfElseIf Text1.Text = "4" ThenIf GetAsyncKeyState(vbKey4) ThenFor i = 1 To Text2.TextSendKeys "{4}"Next iEnd IfElseIf Text1.Text = "5" ThenIf GetAsyncKeyState(vbKey5) ThenFor i = 1 To Text2.TextSendKeys "{5}"Next iEnd IfElseIf Text1.Text = "6" ThenIf GetAsyncKeyState(vbKey6) ThenFor i = 1 To Text2.TextSendKeys "{6}"Next iEnd IfElseIf Text1.Text = "7" ThenIf GetAsyncKeyState(vbKey7) ThenFor i = 1 To Text2.TextSendKeys "{7}"Next iEnd IfElseIf Text1.Text = "8" ThenIf GetAsyncKeyState(vbKey8) ThenFor i = 1 To Text2.TextSendKeys "{8}"Next iEnd IfElseIf Text1.Text = "9" ThenIf GetAsyncKeyState(vbKey9) ThenFor i = 1 To Text2.TextSendKeys "{9}"Next iEnd IfElseIf Text1.Text = "0" ThenIf GetAsyncKeyState(vbKey0) ThenFor i = 1 To Text2.TextSendKeys "{0}"Next iEnd IfElseIf Text1.Text = "ENTER" Or Text1.Text = "enter" Or Text1.Text = "Enter" ThenIf GetAsyncKeyState(vbKeyReturn) Then For i = 1 To Text2.TextSendKeys "{enter}"Next iEnd IfEnd IfEnd SubPrivate Sub Timer2_Timer()Static c As Integerc = c + 1Select Case cCase 1Label4.ForeColor = vbGreenCase 2Label4.ForeColor = vbYellowCase 3Label4.ForeColor = vbBlueCase 4Label4.ForeColor = &HFF00&c = 0End SelectEnd Sub。
VB编程中的键盘和鼠标知识总结!大家好,今天我们来学习VB编程中的键盘与鼠标知识。
读书改变命运,这个理论在当今社会仍然适用。
并且越喜欢读书学习的人,越有更多机会去选择自己想要的生活。
不要惧怕读书的苦,这是你通向美好未来最好的路,共同努力!VB中的键盘与鼠标事件KeyPress事件KeyPress事件简介在窗体上画一个控件(指可以发生KeyPress事件的控件),并双击该控件,进入程序代码窗口后,从'过程'框中选取KeyPress,即可定义KeyPress事件过程。
一般格式为:Private Sub Text1_KeyPress(KeyAscii As Integer)'用户按下并释放一个能产生ASCII码的键时被触发End SubKeyPress事件带有一个参数,这个参数有两种形式:第1种形式是Index As Integer,只用于控件数组;第2种形式是KeyAscii As Integer,用于单个控件。
KeyDown和KeyUp事件KeyDown和KeyUp事件简介KeyDown和KeyUp事件的参数也有两种形式,其中Index As Integer只用于控件数组,而KeyCode As Integer,Shift As Integer用于单个控件。
KeyDown和KeyUp事件都有两个参数,即KeyCode和Shift。
①KeyCode是按键的实际ASCII码。
该码以'键'为准,而不是以'字符'为准。
②Shift转换键。
它指的是3个转换键的状态,包括Shift,Ctrl和Alt键,这3个键分别以二进制数形式表示,每个键有3位,即Shift 键为001,Ctrl键为010,Alt键为100。
Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)'用户按下任一个键时被触发End SubPrivate Sub Command1_KeyUp(KeyCode As Integer, Shift As Integer)'用户释放任一个键时被触发End Sub鼠标事件鼠标事件简介为了实现鼠标操作,Visual Basic中提供了以下3个事件过程。
键盘与鼠标事件过程(上机指导)教学要求:掌握键盘事件KeyPress、KeyDown、KeyUp的基本方法;掌握鼠标事件MouseDown、MouseUp、MouseMove的基本方法;能利用键盘事件、鼠标事件进行程序设计。
知识点:各键盘事件的使用方法;各鼠标事件的使用方法。
内容导航:一、键盘事件(一)KeyPress事件该事件在单击键盘时发生。
它可获得按键的KeyAscii码,并不是单击任意一个键都会发生KeyPress事件,该事件只对会产生ASCII码的键有反应。
在窗体上画一个控件(指上面所讲的可以发生KeyPress事件的控件),双击该控件,进入程序代码窗口后,从“过程”框中选取KeyPress,即可以定义KeyPress事件过程。
一般格式为:Private Sub Command1_KeyPress(KeyAscii As Integer)… …End Sub(二)KeyDown事件和KeyUp事件当用户按下键盘上的任意一个键,便触发该对象的KeyDown事件,释放按键则触发KeyUp 事件。
由于按下键盘的键往往会立即放开,所以这两个事件的使用差别并不大。
KeyDown事件和KeyUp事件的参数有两种形式,其中Index As Integer只用于控件组,而KeyCode As Integer, Shift As Integer用于单个控件。
二、鼠标事件鼠标事件是由用户操作鼠标而引发的事件。
(一)Click事件用户单击鼠标键时发生,格式如下:Private Sub控件名_Click ( [ index As Integer ] )其中Index用于当控件是控件数组时传递的参数。
(二)DbClick事件用户双击鼠标键时发生,格式如下:Private Sub控件名_DbClick ( [ index As Integer ] )(三)MouseDown事件用户按下鼠标上的任一按钮时,就会引发该事件。
第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
注意:在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。
所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。
奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
为了便于查询,以下列出ASCII码表:常用ASCII 码对照表第128~255号为扩展字符(不常用),如需要请下载:完整的8位ASCII 字符表keycode 是键盘上每一个按键对应的码keycode如下:keycode 0 =keycode 1 =keycode 2 =keycode 3 =keycode 4 =keycode 5 =keycode 6 =keycode 7 =keycode 8 = BackSpace BackSpace keycode 9 = Tab Tabkeycode 10 =keycode 11 =keycode 12 = Clearkeycode 13 = Enterkeycode 14 =keycode 15 =keycode 16 = Shift_Lkeycode 17 = Control_Lkeycode 18 = Alt_Lkeycode 19 = Pausekeycode 20 = Caps_Lockkeycode 21 =keycode 22 =keycode 23 =keycode 24 =keycode 25 =keycode 26 =keycode 27 = Escape Escapekeycode 28 =keycode 29 =keycode 30 =keycode 31 =keycode 32 = space spacekeycode 33 = Priorkeycode 34 = Nextkeycode 35 = Endkeycode 36 = Homekeycode 37 = Leftkeycode 38 = Upkeycode 39 = Rightkeycode 40 = Downkeycode 41 = Selectkeycode 43 = Executekeycode 44 =keycode 45 = Insertkeycode 46 = Deletekeycode 47 = Helpkeycode 48 = 0 equal braceright keycode 49 = 1 exclam onesuperior keycode 50 = 2 quotedbl twosuperior keycode 51 = 3 section threesuperior keycode 52 = 4 dollarkeycode 53 = 5 percentkeycode 54 = 6 ampersandkeycode 55 = 7 slash braceleft keycode 56 = 8 parenleft bracketleft keycode 57 = 9 parenright bracketright keycode 58 =keycode 59 =keycode 60 =keycode 61 =keycode 62 =keycode 63 =keycode 64 =keycode 65 = a Akeycode 66 = b Bkeycode 67 = c Ckeycode 68 = d Dkeycode 69 = e E EuroSignkeycode 70 = f Fkeycode 71 = g Gkeycode 72 = h Hkeycode 73 = i Ikeycode 74 = j Jkeycode 75 = k Kkeycode 76 = l Lkeycode 77 = m M mukeycode 78 = n Nkeycode 79 = o Okeycode 80 = p Pkeycode 81 = q Q atkeycode 82 = r Rkeycode 83 = s Skeycode 84 = t Tkeycode 85 = u Ukeycode 87 = w Wkeycode 88 = x Xkeycode 89 = y Ykeycode 90 = z Zkeycode 91 =keycode 92 =keycode 93 =keycode 94 =keycode 95 =keycode 96 = KP_0 KP_0keycode 97 = KP_1 KP_1keycode 98 = KP_2 KP_2keycode 99 = KP_3 KP_3keycode 100 = KP_4 KP_4keycode 101 = KP_5 KP_5keycode 102 = KP_6 KP_6keycode 103 = KP_7 KP_7keycode 104 = KP_8 KP_8keycode 105 = KP_9 KP_9keycode 106 = KP_Multiply KP_Multiply keycode 107 = KP_Add KP_Add keycode 108 = KP_Separator KP_Separator keycode 109 = KP_Subtract KP_Subtract keycode 110 = KP_Decimal KP_Decimal keycode 111 = KP_Divide KP_Divide keycode 112 = F1keycode 113 = F2keycode 114 = F3keycode 115 = F4keycode 116 = F5keycode 117 = F6keycode 118 = F7keycode 119 = F8keycode 120 = F9keycode 121 = F10keycode 122 = F11keycode 123 = F12keycode 124 = F13keycode 125 = F14keycode 126 = F15keycode 127 = F16keycode 128 = F17keycode 129 = F18keycode 131 = F20 keycode 132 = F21 keycode 133 = F22 keycode 134 = F23 keycode 135 = F24 keycode 136 = Num_Lock keycode 137 = Scroll_Lock keycode 138 =keycode 139 =keycode 140 =keycode 141 =keycode 142 =keycode 143 =keycode 144 =keycode 145 =keycode 146 =keycode 147 =keycode 148 =keycode 149 =keycode 150 =keycode 151 =keycode 152 =keycode 153 =keycode 154 =keycode 155 =keycode 156 =keycode 157 =keycode 158 =keycode 159 =keycode 160 =keycode 161 =keycode 162 =keycode 163 =keycode 164 =keycode 165 =keycode 166 =keycode 167 =keycode 168 =keycode 169 =keycode 170 =keycode 171 =keycode 172 =keycode 173 =keycode 174 =keycode 175 =keycode 176 =keycode 177 =keycode 178 =keycode 179 =keycode 180 =keycode 181 =keycode 182 =keycode 183 =keycode 184 =keycode 185 =keycode 186 =keycode 187 = acute gravekeycode 188 = comma semicolon keycode 189 = minus underscore keycode 190 = period colonkeycode 191 =keycode 192 = numbersign apostrophe keycode 193 =keycode 194 =keycode 195 =keycode 196 =keycode 197 =keycode 198 =keycode 199 =keycode 200 =keycode 201 =keycode 202 =keycode 203 =keycode 204 =keycode 205 =keycode 206 =keycode 207 =keycode 208 =keycode 209 =keycode 210 = plusminus hyphen macron keycode 211 =keycode 212 = copyright registered keycode 213 = guillemotleft guillemotright keycode 214 = masculine ordfeminine keycode 215 = ae AEkeycode 216 = cent yenkeycode 217 = questiondown exclamdownkeycode 218 = onequarter onehalf threequarters keycode 219 =keycode 220 = less greater barkeycode 221 = plus asterisk asciitildekeycode 222 =keycode 223 =keycode 224 =keycode 225 =keycode 226 =keycode 227 = multiply divisionkeycode 228 = acircumflex Acircumflex keycode 229 = ecircumflex Ecircumflex keycode 230 = icircumflex Icircumflex keycode 231 = ocircumflex Ocircumflex keycode 232 = ucircumflex Ucircumflex keycode 233 = ntilde Ntildekeycode 234 = yacute Yacutekeycode 235 = oslash Oobliquekeycode 236 = aring Aringkeycode 237 = ccedilla Ccedillakeycode 238 = thorn THORNkeycode 239 = eth ETHkeycode 240 = diaeresis cedilla currency keycode 241 = agrave Agrave atilde Atilde keycode 242 = egrave Egravekeycode 243 = igrave Igravekeycode 244 = ograve Ograve otilde Otilde keycode 245 = ugrave Ugravekeycode 246 = adiaeresis Adiaeresiskeycode 247 = ediaeresis Ediaeresiskeycode 248 = idiaeresis Idiaeresiskeycode 249 = odiaeresis Odiaeresiskeycode 250 = udiaeresis Udiaeresiskeycode 251 = ssharp question backslash keycode 252 = asciicircum degreekeycode 253 = 3 sterlingkeycode 254 = Mode_switch。
vbSendKeys方法
1.模拟按键:
2.输入文本:
3.模拟组合键:
4.间隔时间:
5. 启用/禁用vbSendKeys方法:
需要注意的是,vbSendKeys方法在模拟键盘输入时,键盘焦点必须在接收输入的窗口上。
因此,在调用vbSendKeys方法前,可以使用AppActivate方法将焦点设置到指定的窗口上。
另外,vbSendKeys方法也可以结合循环和条件语句等控制结构,实现更复杂的键盘输入操作。
例如:
```
'循环输入数字1到9
For i = 1 To 9
Next i
'根据条件输入不同的文本
If condition = True Then
Else
End If
```
需要注意的是,vbSendKeys方法虽然可以实现自动化键盘输入操作,但它并不适用于所有情况。
特别是在与其他窗口同时交互或与网络操作相
关的应用程序中,可能会遇到一些问题。
在使用vbSendKeys方法时,应
谨慎选择使用场景,并测试确保其按预期工作。
总结:vbSendKeys方法是Visual Basic中的一个关键方法,用于模
拟键盘输入操作。
通过该方法,可以模拟按键、输入文本、模拟组合键等
操作。
并且可以结合循环和条件语句等控制结构,实现更复杂的键盘输入
操作。
使用vbSendKeys方法时,需要确保窗口焦点正确设置,且在特定
场景下会有一些限制。
VB程序设计键盘与鼠标事件过程11.1 键盘事件在Visual Basic中,窗体和接受键盘输入的控件都能识别这三种键盘事件:一是KeyPress,按下对应某ASCII字符的键;二是KeyDown,按下键盘的任意键;三是KeyUp,释放键盘的任意键。
只有获得焦点的对象才能接受键盘事件。
11.1.1 KeyPress事件当按下某个键时,将触发拥有输入焦点(Focus)的那个控件的KeyPress事件,返回“所按字符”的ASCII码。
语法格式:Sub Object_KeyPress(KeyAscii As Integer)或Sub Object_KeyPress([index As Integer,]KeyAscii As Integer) 说明:1、Object:是指窗体或控件对象名;2、index:一个整数,它用来惟一标识一个控件数组中的控件;3、KeyAscii:是指KeyAscii参数返回对应ASCII字符代码的整型数值;KeyPress事件带有一个参数,这个参数有两种形式。
第一种形式为:Index As Integer,这种形式只用于控件数组;第二种形式为:KeyAscii As Integer,这种形式只用于单个控件。
11.1.2 KeyDown事件和KeyUp事件当按下或松开某个键时,将触发拥有输入焦点(Focus)的那个控件的KeyDown事件或者KeyUp事件,返回键盘的直接状态。
KeyDown事件和KeyUp事件的参数也有两种形式:(1)Index As Integer 只用于控件数组。
(2)KeyCode As Integer,Shift As Integer 用于单个控件,本章只讨论这种形式。
语法格式为:Sub Object_KeyDown(KeyCode As Integer,Shift AsInteger)Sub Object_KeyUp(KeyCode As Integer,Shift As Integer)说明:1.KeyCode参数KeyCode表示按下的物理键,以“键”为准,而不是以“字符”为准。
VB编程控制Windows中文输入法
在Windows中我们可以用“Ctrl+Shift”键来调入或切换中文输入法,但是这样做每次都是使位于输入法列表顶端的那个输入法首先被调用。
通常我们都要连续按好几次“Ctrl+Shift”才能将习惯的输入法调出。
我编制了一段小程序,通过它可以把任意一个输入法放在输入法列表的顶端。
它的原理是:使用LoadKeyboardLayout函数可以改变输入法的顺序,只要在第一个参数中传递目标输入法的KeyboardlayoutName,第二个参数用KLF_REORDER就可以了。
例如,aa = LoadKeyboardLayout(″00000409″, KLF_REORDER) 使英文变成第一。
那怎样获得KeyboardlayoutName呢?因为使用GetKeyboardLayoutname可以返回当前输入法的KeyboardlayoutName,所以我们可以先用GetKeyboardLayoutList 函数来取得所有输入法,再用activateKeyboardlayout()函数设置当前输入法,最后就可以得到它的KeyboardlayoutName了。
具体步骤如下:
打开VB后选择标准的EXE文档,在Form1上添加一个Combobox和一个command控件,输入以下程序。
运行后,在combobox中选择目标输入法,按下command即可。
VB快捷键VB快捷键命令快捷键说明编辑.分行Enter Shift + Enter插入一个新行。
编辑.折叠到定义Ctrl + M,Ctrl + O 自动确定在代码中创建区域(如过程)的逻辑边界,然后隐藏它们。
编辑.注释选定内容Ctrl + K,Ctrl + C 使用编程语言的正确注释语法将代码的当前行标记为注释。
编辑.删除水平空白Ctrl + K,Ctrl + \\折叠选定内容中的空白,如果没有选定内容,则删除与光标相邻的空白。
编辑.编排文档格式Ctrl + K,Ctrl + D 按“选项”对话框“文本编辑器”部分中的语言的“格式设置”窗格中的指定,应用该语言的缩进和空格格式设置。
编辑.格式化选定内容Ctrl + K,Ctrl + F根据周围的代码行,正确缩进选定的代码行。
编辑.隐藏选定内容Ctrl + M,Ctrl + H 隐藏选定文本。
信号图标标记隐藏文本在文件中的位置。
编辑.插入制表符Tab 将文本行缩进指定数量的空格,如 5 个。
仅在 .NET Framework 设计器中可用。
编辑.剪切行Ctrl + Y 将选择的所有行(或当前行,如果未选择任何行)剪切到剪贴板。
编辑.删除行Ctrl + Shift + Y删除所有选定行或当前行(如果没有选定行)。
编辑.上开新行Ctrl + Enter在插入点之上插入一个空行。
编辑.下开新行Ctrl + Shift + Enter在插入点之下插入一个空行。
编辑.行转置Shift + Alt + T将包含插入点的行移动到下一行之下。
编辑.改写模式Insert 改写文档中已有的字符,而不是插入字符。
仅在文本编辑器中可用。
编辑.停止隐藏当前区域Ctrl + M,Ctrl + U移除当前选定区域的大纲显示信息。
编辑.停止大纲显示Ctrl + M,Ctrl + P从整个文档中移除所有大纲显示信息。
编辑.交换定位点Ctrl + R,Ctrl + P交换当前选定内容的定位点与结束点。
VB编程的键盘控制我们利用Visual BASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。
下面,我们就来看一看VB编程中如何进行键盘控制。
一、概述在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。
因而VB提供了KeyPress、KeyUp、KeyDown 三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。
下表对这些事件作了描述。
表1键盘事件的触发原因键盘事件触发原因KeyPress按下某ASCII字符键KeyDown按下键盘的任意键KeyUp释放键盘的任意键KeyDown和KeyUp事件提供了最低级的键盘响应,可用这些事件检测KeyPress事件无法检测到的情况:◆SHIFT、CTRL和ALT键的特殊组合。
◆光标控制键。
◆HOME、END、PAGEUP、PAGEDOWN等。
◆数字小键盘的数字键与打字键盘数字键的区别。
◆不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。
键盘事件彼此不相互排斥。
按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。
当用户按下一个KeyPress不能检测的键时将触发KeyDown事件,松开此键时生成KeyUp事件。
若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。
二、KeyPress事件在按下与ASCII字符对应的键时将触发KeyPress事件。
ASCII字符集代表标准键盘的字母、数字和标点符号以及部分控制键(ENTER、TAB、BACKSPACE键等)。
KeyDown 和KeyUp事件能够检测其它功能键、编辑键和光标定位键。
当处理标准ASCII字符时应使用KeyPress事件。
例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:Private Sub Text1_KeyPress(KeyAscii As Integer)KeyAscii=Asc(Ucase(Chr(KeyAscii)))End SubKeyAscii参数返回对应所按键的ASCII代码。
也可通过KeyPress事件识别部分控制键。
例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii=8Then MsgBox"You Pressed the BACKSPACE key."End Sub注:BACKSPACE键的ASCII值为8。
还可用KeyPress事件改变某些键的缺省行为。
例如,当在文本框内按ENTER键就会结束当前行输入并将光标转到下一行(Multiline属性设为True)。
在KeyPress事件中截断ENTER键(ASCII值为13)就可避免这种情况:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii=13Then KeyAscii=0End Sub三、KeyUp和KeyDown事件KeyUp和KeyDown事件报告键盘本身准确的物理状态:按下键(KeyDown)及松开键(KeyUp)。
而KeyPress事件并不直接地报告键盘状态,它只提供键所代表的字符而不识别键的按下或松开状态。
进一步举例将有助于阐明这一差别。
输入大写"A"时,KeyDown事件获得"A"的ASCII 码。
在输入小写"a"时,KeyDown事件获得相同的ASCII码。
为区分大小写,KeyDown和KeyUp事件使用shift参数。
与此相对照的是,KeyPress事件将字母的大小写作为两个不同的ASCII字符处理。
KeyUp和KeyDown事件通过提供下列两参数返回输入字符的信息。
1、Keycode参数字母键的Keycode与此字母大写字符的ASCII值相同,所以"A"和"a"的Keycode都是由Asc("A")返回的数值;数字与标点符号键的Keycode与键上数字的ASCII码相同,因此"1"和"!"的Keycode都是由Asc("1")返回的数值。
Private Sub Text1_Keydown(KeyCode As Integer,Shift As Integer)If KeyCode=65Then MsgBox"You pressed the A or a key."End Sub上例中按下"A"或"a"后都将显示消息框,为判断按下的字母是大写还是小写需用shift 参数。
可见,处理这些键时用KeyPress事件更方便。
KeyDown和KeyUp事件可识别标准键盘上的大多数控制键。
其中包括功能键(F1-F12)、编辑键(HOME、PAGEUP、DELETE等)、光标键(↑、↓、←、→)和数字小键盘上的键。
可以通过键代码常数或相应的ASCII值检测这些键。
例如:Private Sub Text1_Keydown(KeyCode As Integer,Shift As Integer)If KeyCode=36Then MsgBox"You pressed the HOME key."End SubVB中常用控制键的Keycode值见下表:表2常用键的Keycode值键Keycode键Keycode键Keycode BACKSPACE8TAB9ENTER13 CAPS LOCK20SHIFT16CTRL17 PAGEDOWN34PAUSE19ESC27 SPACEBAR32END35HOME36 PAGEUP33INS45DEL46←↑→↓37-400-948-57A-Z65-90 F1-F12112-123小键盘*106小键盘+107小键盘0-996-105小键盘-109小键盘/111108小键盘ENTER2、Shift参数键盘事件使用shift参数来判断按下某键的同时是否按下了SHIFT、CTRL、ALT键或它们的组合。
如果按SHIFT键,则shift为1;按CTRL键,shift为2;按ALT键,shift为3,通过键值总和来判断这些组合。
例如,同时按下SHIFT和ALT键时shift等于5(1+4)。
在使用中,可将KeyDown与KeyUp事件及shift参数一同使用以区分字符的大小写或检测各种组合键。
例如,以下事件过程可捕获CTRL+ALT+F1并给出提示:Private Sub Text1_Keydown(KeyCode As Integer,Shift As Integer)If Keycode=112And Shift=6Then MsgBox"You press the CTRL+ALT+F1Key!"End Sub四、编写窗体级键盘处理程序只有获得焦点的对象才能够接受键盘事件。
当窗体为活动窗体且其上所有控件均未获得焦点时,窗体才获得焦点。
这种情况只有在空窗体或窗体上的控件都无效时才发生。
如果将窗体上的KeyPreview属性设置为True,则每个控件在识别其所拥有的KeyPress、KeyUP、KeyDown事件之前,窗体会抢先接受这些键盘事件。
当您希望无论何时按下某键都会执行同一个操作,而不管哪个控件在此时具有焦点时,这样设置KeyPreview属性极为有用。
可在"属性"窗口中或通过Form_Load过程中的代码设置窗体的KeyPreview属性为True:Private Sub Form_LoadForm1.KeyPreview=TrueEnd Sub需要注意的是,当把窗体的KeyPreview属性设置为True时,窗体在控件之前识别键盘事件,但对控件来说事件仍然会发生,这可能会造成一次按键触发多个不同的处理。
为防止这种情况,可在窗体键盘事件过程结束前将KeyAscii或KeyCode重置为0。
例如,在窗体上将ENTER键捕获并处理后,把KeyAscii或KeyCode设置为0,则控件在自己的键盘事件过程中将无法识别按下的ENTER键,因而控件的键盘事件过程也不被调用。
下面,我们来看一个键盘处理的简单例子:设计一个窗体和文本框以及其它控件,无论焦点在哪个控件,按下CTRL+P即让文本框显示"Hello!";按下ALT+C清除文本框;按下F10结束程序。
Private Sub Form_Load()Form1.KeyPreview=TrueEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer,Shift As Integer)If KeyCode=80And Shift=2Then Text1.Text="Hello!"If KeyCode=67And Shift=4Then Text1.Text=""If KeyCode=121Then EndEnd Sub。