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。这是为什么?
求解答... 展开
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。这是为什么?
求解答... 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询