关于TextBox的一个有意思的现象:
把Text1,Text2,Text3的MultiLine置为true后,按下键盘的上下键,能响应用于测试的MsgBox,但却不能转移焦点,但是对于左右键却可以,不知为什么。请高手指点一下!
代码如下:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyRight:
MsgBox "KeyRight Pressed"
Text2.SetFocus
Case vbKeyUp:
MsgBox "KeyUp Pressed"
Text2.SetFocus
End Select
End SubPrivate Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft:
MsgBox "KeyLeft Pressed"
Text1.SetFocus
Case vbKeyDown:
MsgBox "KeyDown Pressed"
Text1.SetFocus
Case vbKeyRight:
MsgBox "KeyRight Pressed"
Text3.SetFocus
Case vbKeyUp:
MsgBox "KeyUp Pressed"
Text3.SetFocus
End Select
End SubPrivate Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft:
MsgBox "KeyLeft Pressed"
Text2.SetFocus
Case vbKeyDown:
MsgBox "KeyDown Pressed"
Text2.SetFocus
End Select
End Sub
把Text1,Text2,Text3的MultiLine置为true后,按下键盘的上下键,能响应用于测试的MsgBox,但却不能转移焦点,但是对于左右键却可以,不知为什么。请高手指点一下!
代码如下:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyRight:
MsgBox "KeyRight Pressed"
Text2.SetFocus
Case vbKeyUp:
MsgBox "KeyUp Pressed"
Text2.SetFocus
End Select
End SubPrivate Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft:
MsgBox "KeyLeft Pressed"
Text1.SetFocus
Case vbKeyDown:
MsgBox "KeyDown Pressed"
Text1.SetFocus
Case vbKeyRight:
MsgBox "KeyRight Pressed"
Text3.SetFocus
Case vbKeyUp:
MsgBox "KeyUp Pressed"
Text3.SetFocus
End Select
End SubPrivate Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft:
MsgBox "KeyLeft Pressed"
Text2.SetFocus
Case vbKeyDown:
MsgBox "KeyDown Pressed"
Text2.SetFocus
End Select
End Sub
Select Case KeyCode
Case vbKeyRight:
Text2.SetFocus
MsgBox "KeyRight Pressed"
Case vbKeyUp:
Text2.SetFocus
MsgBox "KeyUp Pressed"
End Select
End Sub
这样呢?
另外似乎有一个现象:比如丛text2按up,光标好象闪到tex3后又闪回来了。(有时出现这个现象,希望不是我看看花眼了:))
Select Case KeyCode
Case vbKeyReturn
text3.setfocus
Case vbKeyDown
Text3.SetFocus
MsgBox "KeyRight Pressed"
Case vbKeyUp
Text1.SetFocus
MsgBox "KeyUp Pressed"
End Select
End Sub
to Leftie(Leftie) :也不行,更本执行不到Case vbKeyReturn这一句,我设断点试了。
Select Case KeyCode
Case vbKeyLeft:
MsgBox "KeyLeft Pressed"
Text3.SetFocus
Case vbKeyDown:
MsgBox "KeyDown Pressed"
Text2.SetFocus
Case vbKeyRight:
MsgBox "KeyRight Pressed"
Text2.SetFocus
Case vbKeyUp:
MsgBox "KeyUp Pressed"
Text3.SetFocus
End Select
KeyCode = vbKeyCancel
End SubPrivate Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft:
MsgBox "KeyLeft Pressed"
Text1.SetFocus
Case vbKeyDown:
MsgBox "KeyDown Pressed"
Text3.SetFocus
Case vbKeyRight:
MsgBox "KeyRight Pressed"
Text3.SetFocus
Case vbKeyUp:
MsgBox "KeyUp Pressed"
Text1.SetFocus
End Select
KeyCode = vbKeyCancel
End SubPrivate Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft:
MsgBox "KeyLeft Pressed"
Text2.SetFocus
Case vbKeyDown:
MsgBox "KeyDown Pressed"
Text1.SetFocus
Case vbKeyRight:
MsgBox "KeyRight Pressed"
Text1.SetFocus
Case vbKeyUp:
MsgBox "KeyUp Pressed"
Text2.SetFocus
End Select
KeyCode = vbKeyCancel
End Sub
KeyCode = vbKeyCancel
,为什么左右键不用没问题,而上下键就必须用呢?谢谢!
你可以根据自己的要求改变其位置以达到目的
Select Case KeyCode
Case vbKeyLeft:
MsgBox "KeyLeft Pressed"
Text2.SetFocus
keycode=vbkeycancel
Case vbKeyDown:
MsgBox "KeyDown Pressed"
Text1.SetFocus
keycode=vbkeycancel
Case vbKeyRight:
MsgBox "KeyRight Pressed"
Text1.SetFocus
Case vbKeyUp:
MsgBox "KeyUp Pressed"
Text2.SetFocus
End Select
End Sub这时按左和下后就不会对下一控件产生作用了,但是右和上有可能还会对下一控件产生作用