VB中的LostFocus事件问题

编写一个程序输出一个数组。其中有两步运行起来很奇怪的,就是我需要判断输入的区间的上下限是整数,输入的随机生成的元素个数是4的倍数。只有条件都满足时,Button1才可用。... 编写一个程序输出一个数组。其中有两步运行起来很奇怪的,就是我需要判断输入的区间的上下限是整数,输入的随机生成的元素个数是4的倍数。只有条件都满足时,Button1才可用。代码大致如下:

TextBox1.LostFocus事件:

If Val(TextBox1.Text) - Int(Val(TextBox1.Text)) <> 0 Then
MsgBox("请输入整数")
TextBox1.Clear()
TextBox1.Focus()
End If
If TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then
Button1.Enable = True
End If

TextBox2.LostFocus事件:

If Val(TextBox2.Text) - Int(Val(TextBox2.Text)) <> 0 Then
MsgBox("请输入整数")
TextBox2.Clear()
TextBox2.Focus()
End If
If TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then
Button1.Enable = True
End If

TextBox3.LostFocus事件:

If Val(TextBox3.Text) mod 4 <> 0 Then
MsgBox("n必须为4的倍数")
TextBox3.Clear()
TextBox3.Focus()
End If
If TextBox1.Text <> "" And TextBox2.Text <> "" And TextBox3.Text <> "" Then
Button1.Enable = True
End If
说明:我不知道操作者是先输入上界下界还是个数,即我不确定最后失去焦点的是哪个TextBox,所以每个都判断了一次是否完成了正确的数据输入,是否激活Button1。
问题在于:我最后输入TextBox3的内容,通过光标点击TextBox2使得TextBox3失去焦点触发事件,但触发后效果与预期不同,通过逐步执行发现,在MsgBox("n...")出现前,程序跳到TextBox2.LostFocus事件并循环一次,激活Button1,然后回到MsgBox,接着Clear,接着Focus,然后判断If。这里我觉得MsgBox本身有一种失焦的作用所以可以理解。但之后,程序又跑了一次TextBox3.LostFocus全部,这是为什么?
当我把MsgBox删去后,程序在3的Focus事件时跳到2,执行一遍,回到3,End If后又跳到2执行一遍,等3整个完了,又执行一遍3。这是为什么?
求解答...
展开
 我来答
百度网友88e38f0
2017-12-11 · TA获得超过1538个赞
知道小有建树答主
回答量:5053
采纳率:57%
帮助的人:331万
展开全部
比如text,点击选中的text,再选择lostfocus即可
在里面就可以写代码了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式