如果两个相连的TXTEDIT都进行数据检查,发生死循环无法退出
编号:QA003931
建立日期: 2001年2月27日 最后修改日期:2001年11月25日
所属类别:
iu3:
操作系统: windows98
编程工具: vb6
问题:
我想在每一个TXTEDIT输入数据后检查其中的内容,我现在用的办法很笨拙,就是在LOSTFOCUS后检查,如果有错误就TXTEDIT1.SETFOCUS。但现在有一个问题就是如果有两个相连的TXTEDIT都使用这种方法来检查的话如果第一个TXTEDIT未输入正确的数据就按下TAB使焦点移到下一个TXTEDIT时会发生死循环无法退出,请问有什么更好的办法呢?另外有什么办法可以按ENTER键就使焦点跳到下一个TXTEDIT而不必使用TAB键呢?
回答:
一般填完表格后都有一个确认按钮,可以在此按钮的事件中检查输入的值是否正确。在txtedit的keypress事件中,检测输入的每一个字符,如果 keyascii = 13(回车)的话就textedit2.setfocus。
相关问题:
QA000287 "如何按Enter键后移动输入焦点"
李明的意见:
我找到了一种很好的解决办法:
具体是应用TEXT控件的VALIDATE事件。该事件在失去焦点时第一个发生。具体方法如下:
1、设定要进行数据检查的控件的CASEUSVALIDATION为TRUE
2、设定要进行数据检查的控件的VALIDATE的事件。在这里面加入代码。具体代码如下:
Private Sub Text2_Validate(Index As Integer, Cancel As Boolean)
jg =text2.text
if 此处加入条件要求,如不符合要求 then
response = MsgBox("时间超范围!", vbOKOnly + vbQuestion, "错误!") Cancel = True
End Sub
注:这种办法解决的很好。如需检查的TEXT控件很多,可以应用控件数组。很方便。此种方法可以同时检查回车键和鼠标产生的事件,很方便用户的使用。我在VB6.0下调试通过。
sapphire的意见:
建议: 其实只要用控件数组就可以了,因为如果是在一个数组中就不可能循环触发LOSTFOCUS事件。
此问题由少男回答。
| |
|
|
| |
|
|