回车键代替Tab键时用了以下代码:
Private Sub Text13_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then SendKeys "{Tab}"
End Sub
但是遇到了多行文本框,在多行文本框内按回车键换行时光标就移到另一个控件了,多行文本框自动换行不能实现,怎么处理?

解决方案 »

  1.   

    多行文本框的 keypress 中不添加这句不就行了。
      

  2.   

    多行文本框按回车就自动换行了,没明白楼主要用tab键来代替回车键到底要实现什么功能?
      

  3.   

    用QQ的方法,多行文本输入时,用组合键alt+enter等等,不要只输入一个enter
      

  4.   

    用户录入数据时一般习惯按回车键来转到下一个控件(TAB键有这功能但用户不习惯),不用拿鼠标点了.
    楼上说的<多行文本框的 keypress 中不添加这句不就行了。>那要是这个文本框不是录入数据的最后一项,用户不还得拿鼠标点击来转到下一个控件吗?没有其它办法了?
      

  5.   

    我猜LZ的意思是多个文本框建议用控件数组,用KeyPress事件传过来的参数Index判断跳转的下一个文本框
      

  6.   

    你这完全是自相矛盾。不管它是不是最后一个,都是一样的道理:
    又要多行文本框能够接受换行,又要它能跳转,但键值只有一个。除非你的程序能读到用户心里想什么,否则没办法知道他是想换行还是想跳转。或者你可以考虑在多行文本框中按 ctrl + enter 为换行,否则就是跳转。
    不过这有什么意义?有按 ctrl + enter 的时间,已按了两次 tab 键了。
      

  7.   

    用回车键代替TAB键这应该是很正常的啊,难道大家没有遇到过这样的用户?用户录入数据时很方便的,我用PB做的软件全是这么实现的.
    我觉得用组合键ctrl + enter 来实现多行文本框换行这个方法不错,只按回车来实现跳转.
    但不知道用组合键ctrl + enter 来实现多行文本框换行的代码怎么写?怎么知道用户按的是ctrl + enter?我是新手,前辈们请多指教啊!谢谢了.
      

  8.   

    不用了,已解决.刚发现在多行文本框中按下ctrl+ enter  是可以自动换行的.
      

  9.   

    要使用 ctrl + enter 就要麻烦不少了。Private ctrlkey As BooleanPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
        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 中处理,是不能取消按钮事件的,那样跳转时会多一个回车出来。