标题:请教一个关天text文本框keypress响应的问题
只看楼主
农民帅哥
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2017-3-7
得分:0 
回复 10楼 吹水佬
谢谢,谢谢
这个思路学到了,一步步来
2022-12-15 17:38
农民帅哥
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2017-3-7
得分:0 
回复 10楼 吹水佬
老大再请教一下,按您的方法

? 用量1

回车后这个值显示没有变化,和输入的值不一样,但这个时候打开关联的表和这个text所对应的字段值却已经改变了的,这是为啥啊?
2022-12-15 17:51
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:2 
text控件的keypress事件需要先屏蔽一下吧?
nodefault
等执行完你自己的代码后再执行默认代码。
dodefault()
2022-12-15 19:14
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用农民帅哥在2022-12-15 17:51:00的发言:

老大再请教一下,按您的方法

? 用量1

回车后这个值显示没有变化,和输入的值不一样,但这个时候打开关联的表和这个text所对应的字段值却已经改变了的,这是为啥啊?

textbox触发keypress事件,这时是输入过程的一个“中断”,输入还没有完成的,就不会更新绑定的数据源。
既然是回车后处理数据,倒不如在textbox的LostFocus事件中处理。甚至可以不用绑定数据源,在数据编辑完成确认后统一更新数据源。
2022-12-15 19:58
农民帅哥
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2017-3-7
得分:0 
回复 13楼 sam_jiang
谢谢大侠,加进去回车没用了请教应该怎么用,谢谢
2022-12-15 20:24
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:2 
14楼已经说的很清楚了,keypress事件发生在焦点切换之前,textbox未丢失焦点之前是不会更新所绑定的【变量/字段】值的
所以,replace 中的【变量1】没有变,你应该把 变量1 换成 this.value

但这仍是错误的设计,用户不光会用 enter,还有很多其他方法结束这个文本框的输入:
1. 值被填满时,例如:变量1 是 N(4,2) 用户录入 1.23 后
2. 可以按 enter,也可以用 tab 键
3. 可以按快捷键 alt+?直接跳到其他控件(如果有的话)
4. 可以鼠标点其他允许操作的控件

所以,replace ... 应该放在 LostFocus 事件中,根本不需要判断按了什么键


[此贴子已经被作者于2022-12-15 23:24编辑过]

2022-12-15 23:20
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
回复 15楼 农民帅哥
dodefault()用了吗?
2022-12-16 15:59
农民帅哥
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2017-3-7
得分:0 
回复 16楼 csyx
谢谢,马上试试
2022-12-16 20:42
农民帅哥
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2017-3-7
得分:0 
回复 17楼 sam_jiang
用了
2022-12-16 20:42
农民帅哥
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2017-3-7
得分:0 
回复 16楼 csyx
谢谢,一句话点醒我这个菜鸟
2022-12-16 20:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510955-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067038 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved