以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 为什么文本框不能重新获得输入焦点呢? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=43078) |
||
-- 作者:zhsenchzhi -- 发布时间:2013/11/29 1:06:00 -- 为什么文本框不能重新获得输入焦点呢? 一个输入文本框, 输入文本后,点击回车,执行一些代码, 做了 keydown 事件, 事件能够正确响应, 就是希望在 事件响应结束,输入焦点能够再回到该文本框,但是 不行,不知为什么,代码如下,写在该文本输入框的 keydown事件中
If e.KeyCode <> Keys.Enter Then Dim name As String =e.Form.Controls("TbFlushCard").text If name Is Nothing OrElse name.trim.length<1 Then
e.Form.Controls("TbView").text=""
关键是代码的最后三行, 其中倒数第二、第三行 是将 两个 文本输入框的 输入清空,这两行能够正确执行,最后一行是将输入焦点 重新设置到 e.Form.Controls("TbFlushCard") 上面,但是就是实现不了,不知为什么
中间的代码是对一个表进行操作, 代码执行完毕后,输入焦点 停留在这个被操作的表上
请问该怎么办呢 |
||
-- 作者:zhsenchzhi -- 发布时间:2013/11/29 1:34:00 -- 多谢,这么晚还没睡觉呀 |
||
-- 作者:zhsenchzhi -- 发布时间:2013/11/29 1:56:00 -- 刚才试了这个方法:
这段代码执行后,出现一个很奇怪的问题, 就是第一次执行完毕后, 当前输入焦点并不能 立刻回到该 文本框,此时,输入字符,该输入框接收不到输入的字符,(经过试验,此时该输入框虽然接受不到字符,但是按下回车键还能相应 keydown事件)必须敲一下回车键,然后才能回到焦点并接受输入字符,
然后 再 执行,第一次还是回不到该文本框,必须再次敲一下回车,依此类推
请问这又是怎么回事呀,
就是 一个输入文本框,输入字符后,按下回车,相应keydown事件,执行完毕后 ,再执行以下代码
此时 该文本框 能够相应 按下回车的 keydown事件,却不能 接受输入的字符,必须再次按下回车后,才能正常接受,然后又不行,再按下回车后,又正常,反复如此 |
||
-- 作者:逛逛 -- 发布时间:2013/11/29 10:38:00 -- 一个偷懒的方法
e.Form.Controls("TbFlushCard").Select()
改成:
e.Cancel = True
代码执行完后,撤销此次按键 |
||
-- 作者:zhsenchzhi -- 发布时间:2013/11/30 8:03:00 -- 多谢 楼上的两位耐心解答,通过测试, 最后 还是使用 e.Cancel = True 这种方式 解决问题了,
使用 |
||
-- 作者:逛逛 -- 发布时间:2013/11/30 19:00:00 -- 以下是引用zhsenchzhi在2013-11-30 8:03:00的发言:
多谢 楼上的两位耐心解答,通过测试, 最后 还是使用 e.Cancel = True 这种方式 解决问题了,
使用 因为回车键、F1键等都是常用键,很多程序都有事件处理程序写在里面 e.Cancel = True 其实是告诉系统,你已经处理完本次事件了。 否则,系统处理完你的代码后,会接着处理后续的代码,像回车键就是将焦点转移到下个Tab序号的控件。 让你产生代码不起作用的错觉。
|
||
-- 作者:zhsenchzhi -- 发布时间:2013/12/1 9:44:00 -- 多谢 |