回车键代替Tab键时用了以下代码:
Private Sub Text13_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then SendKeys "{Tab}"
End Sub
但是遇到了多行文本框,在多行文本框内按回车键换行时光标就移到另一个控件了,多行文本框自动换行不能实现,怎么处理?
Private Sub Text13_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then SendKeys "{Tab}"
End Sub
但是遇到了多行文本框,在多行文本框内按回车键换行时光标就移到另一个控件了,多行文本框自动换行不能实现,怎么处理?
楼上说的<多行文本框的 keypress 中不添加这句不就行了。>那要是这个文本框不是录入数据的最后一项,用户不还得拿鼠标点击来转到下一个控件吗?没有其它办法了?
又要多行文本框能够接受换行,又要它能跳转,但键值只有一个。除非你的程序能读到用户心里想什么,否则没办法知道他是想换行还是想跳转。或者你可以考虑在多行文本框中按 ctrl + enter 为换行,否则就是跳转。
不过这有什么意义?有按 ctrl + enter 的时间,已按了两次 tab 键了。
我觉得用组合键ctrl + enter 来实现多行文本框换行这个方法不错,只按回车来实现跳转.
但不知道用组合键ctrl + enter 来实现多行文本框换行的代码怎么写?怎么知道用户按的是ctrl + enter?我是新手,前辈们请多指教啊!谢谢了.
ctrlkey = (KeyCode = 13 And (Shift And vbCtrlMask) > 0)
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If ctrlkey Then
'同时按下了 ctrl 键,不处理。使用 textbox 的默认行为
Else
KeyAscii = 0 '取消这次键值,防止 textbox 中多出一个回车
SendKeys "{TAB}"
End If
End If
End Sub上面定义了一个 ctlrkey 变量到 keypress 事件中处理,如果直接在 keydown 中处理,是不能取消按钮事件的,那样跳转时会多一个回车出来。