关于TextBox的一个有意思的现象:(关键字:TextBox,MultiLine,KeyCode)

xo2000 2003-05-07 03:55:03
关于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 Sub

Private 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 Sub

Private 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
...全文
72 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xo2000 2003-05-09
  • 打赏
  • 举报
回复
已经结贴了,怎么看不到给分情况呢?
各位,收到分了吧!
DaiLM 2003-05-08
  • 打赏
  • 举报
回复
vbkeycancel表示按键取消,也就是表示不按键
你可以根据自己的要求改变其位置以达到目的
DaiLM 2003-05-08
  • 打赏
  • 举报
回复
比如:

Private Sub Text3_KeyDown(KeyCode As Integer, Shift As Integer)
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

这时按左和下后就不会对下一控件产生作用了,但是右和上有可能还会对下一控件产生作用
xo2000 2003-05-08
  • 打赏
  • 举报
回复
楼上能否详细解释一下什么时候要用这句代码。
或者说为什么左右键不用没问题,而上下键就必须用呢?
kmzs 2003-05-07
  • 打赏
  • 举报
回复
上下键要在行间转换……
xo2000 2003-05-07
  • 打赏
  • 举报
回复
谢谢各位,用 DaiLM()的方法把问题解决了!

DaiLM() 能否解释一下为什么要用
KeyCode = vbKeyCancel
,为什么左右键不用没问题,而上下键就必须用呢?谢谢!
DaiLM 2003-05-07
  • 打赏
  • 举报
回复
已改过,并通过了!

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
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 Sub

Private 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 Sub

Private 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
xo2000 2003-05-07
  • 打赏
  • 举报
回复
to victorycyz(中海) :试了,也不管用。应该没什么关系,不然,左右键怎么行呢?
to Leftie(Leftie) :也不行,更本执行不到Case vbKeyReturn这一句,我设断点试了。
饮水需思源 2003-05-07
  • 打赏
  • 举报
回复
Private Sub Text2_KeyDown(KeyCode As Integer, Shift As Integer)
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
victorycyz 2003-05-07
  • 打赏
  • 举报
回复
先把text3_keydown()注释掉看看。
xo2000 2003-05-07
  • 打赏
  • 举报
回复
to victorycyz(中海) :结果一样,不起作用。
另外似乎有一个现象:比如丛text2按up,光标好象闪到tex3后又闪回来了。(有时出现这个现象,希望不是我看看花眼了:))
victorycyz 2003-05-07
  • 打赏
  • 举报
回复
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyRight:
Text2.SetFocus
MsgBox "KeyRight Pressed"

Case vbKeyUp:
Text2.SetFocus
MsgBox "KeyUp Pressed"

End Select
End Sub
这样呢?

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧