Foxtable(狐表)用户栏目专家坐堂 → [求助]关于多行文本“Enter”键和“TAB”键切换的问题


  共有2877人关注过本帖树形打印复制链接

主题:[求助]关于多行文本“Enter”键和“TAB”键切换的问题

帅哥哟,离线,有人找我吗?
5159518
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
[求助]关于多行文本“Enter”键和“TAB”键切换的问题  发帖心情 Post By:2020/11/21 13:18:00 [只看该作者]

老师,多行文本框输入时,默认是“Enter”换行,“TAB”键跳转到下一个控件,项目中需要实现“Ctrl+Enter”换行,“Enter”跳转到下一个控件,可是实现起来总是很凌乱,不知道为什么,请老师指点

If e.Control = True AndAlso e.KeyCode = Keys.Enter Then
    ‘e.Sender.Text &= vbcrlf
    Sendkeys.Send("{Enter}")
    ‘e.Cancel = False
    e.Cancel = True
Else If e.KeyCode = Keys.Enter Then
    Sendkeys.Send("{TAB}")
    e.Cancel = True
End If

不知道这个代码究竟应该要如何写?

这个代码,按下“Enter”是可以跳转了,可是按下“Ctrl+Enter”就连续换nnnn多行,然后,就跳转出去了
[此贴子已经被作者于2020/11/21 13:21:24编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
5159518
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/23 14:06:00 [只看该作者]

图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看

三天了,怎么还没有人回复啊?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/23 14:56:00 [只看该作者]

没有办法控制

 回到顶部
帅哥哟,离线,有人找我吗?
5159518
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/24 21:08:00 [只看该作者]

以下是引用有点蓝在2020/11/23 14:56:00的发言:
没有办法控制


老师,你是来打酱油的吗?我发现你回答最多的就是“没办法”了图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/24 22:00:00 [只看该作者]

测试过,确实没有办法,能力有限,总不能不懂装懂。也就是帮助文档比你们熟悉一点,百度用的溜一点,不算什么高手。

这些都是控件的默认行为,不好控制,如果是vs还可以自定义控件替换掉这些默认快捷键。建议还是按照默认的快捷键使用

 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2020/11/25 8:26:00 [只看该作者]

If e.Control And  e.KeyCode = Keys.Enter  Then
    e.Sender.Text &= vbcrlf
Else If e.KeyCode = Keys.Enter Then
    Sendkeys.Send("{TAB}")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/25 8:36:00 [只看该作者]

汗,加了个e.cancel,所以测试不通。忘记了多行文本框enter键不会离开焦点

 回到顶部
帅哥哟,离线,有人找我吗?
5159518
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:384 积分:2706 威望:0 精华:0 注册:2015/11/27 19:09:00
  发帖心情 Post By:2020/11/27 9:00:00 [只看该作者]

以下是引用逛逛在2020/11/25 8:26:00的发言:
If e.Control And  e.KeyCode = Keys.Enter  Then
    e.Sender.Text &= vbcrlf
Else If e.KeyCode = Keys.Enter Then
    Sendkeys.Send("{TAB}")
End If


逛逛老师,这个代码测试的结果:回车,可以跳转;ctrl+Enter,可以换行,但是如果连续换行,就出问题了,请问应该如何解决?


 回到顶部
帅哥哟,离线,有人找我吗?
逛逛
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:1693 积分:12117 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2020/11/27 13:53:00 [只看该作者]

迂回一下,要不然要用api了
1、属性:删除尾空格设为False
2、Leave 事件:删除尾空格
e.Sender.Text = e.Sender.Text.Trim
If e.Sender.Text.Length > 0 Then
    e.Sender.SelectionStart = e.Sender.Text.Length -1
    e.Sender.SelectionLength = 1
End If
3、KeyDown
If e.Control And  e.KeyCode = Keys.Enter  Then
    e.Sender.Text = e.Sender.Text & chr(10)
    e.Sender.SelectionStart = e.Sender.Text.Length -1
    e.Sender.SelectionLength = 1
Else If e.KeyCode = Keys.Enter Then
    Sendkeys.Send("{TAB}")
End If




 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/11/27 14:29:00 [只看该作者]

删除尾空格设为False

控件keydown
If e.Control AndAlso  e.KeyCode = Keys.Enter  Then
    e.Sender.Text = e.Sender.Text & vbcr
    e.Sender.SelectionStart = e.Sender.Text.Length - 1
Else If e.KeyCode = Keys.Enter Then
    Sendkeys.Send("{TAB}")
    e.cancel = True
End If

 回到顶部
总数 11 1 2 下一页