以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于多行文本“Enter”键和“TAB”键切换的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=158483) |
-- 作者:5159518 -- 发布时间:2020/11/21 13:18:00 -- [求助]关于多行文本“Enter”键和“TAB”键切换的问题 老师,多行文本框输入时,默认是“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 -- 发布时间:2020/11/23 14:06:00 -- ![]() ![]() ![]() 三天了,怎么还没有人回复啊?
|
-- 作者:有点蓝 -- 发布时间:2020/11/23 14:56:00 -- 没有办法控制 |
-- 作者:5159518 -- 发布时间:2020/11/24 21:08:00 -- 以下是引用有点蓝在2020/11/23 14:56:00的发言: 没有办法控制 老师,你是来打酱油的吗?我发现你回答最多的就是“没办法”了
![]() ![]() ![]() |
-- 作者:有点蓝 -- 发布时间:2020/11/24 22:00:00 -- 测试过,确实没有办法,能力有限,总不能不懂装懂。也就是帮助文档比你们熟悉一点,百度用的溜一点,不算什么高手。 这些都是控件的默认行为,不好控制,如果是vs还可以自定义控件替换掉这些默认快捷键。建议还是按照默认的快捷键使用
|
-- 作者:逛逛 -- 发布时间: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
|
-- 作者:有点蓝 -- 发布时间:2020/11/25 8:36:00 -- 汗,加了个e.cancel,所以测试不通。忘记了多行文本框enter键不会离开焦点 |
-- 作者:5159518 -- 发布时间: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,可以换行,但是如果连续换行,就出问题了,请问应该如何解决?
|
-- 作者:逛逛 -- 发布时间:2020/11/27 13:53:00 -- 迂回一下,要不然要用api了 1、属性:删除尾空格设为False2、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 |
-- 作者:有点蓝 -- 发布时间: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 |