程序在Combo1_LostFocus()与Combo2_LostFocus()两个事件间转来转去。
程序启动后先运行下面代码Private Sub Form_Activate()
For i = 1 To 100
Combo1.AddItem i
Combo2.AddItem i
Next i
Combo1.Text = ""
Combo2.Text = ""Combo1.SetFocus '这里combo1.text=""
SendKeys "{TAB}" '这触发Combo1_LostFocus()事件这个时候之前combo2已获得焦点
End SubPrivate Sub Combo1_LostFocus()
If Combo1.Text = "" Then
Combo1.SetFocus '这段让combo1获得焦点 同时combo2也失去焦点触
'发Combo2_LostFocus()事件 在事件代码中combo2
'又使combo2获得焦点 同时combo1又失去焦点触
'发Combo1_LostFocus()事件....就这样成死循环
'在Form_Activate()事件中在sendkey "{Tab}"前
'加上Combo1.ListIndex = 0 可暂时避免死循环
End If
End SubPrivate Sub Combo2_LostFocus()
If Combo1.Text = "" Then
Combo2.SetFocus '使combo2获得焦点 同时combo1又失去焦点触
'发Combo1_LostFocus()事件
End If
End Sub
程序启动后先运行下面代码Private Sub Form_Activate()
For i = 1 To 100
Combo1.AddItem i
Combo2.AddItem i
Next i
Combo1.Text = ""
Combo2.Text = ""Combo1.SetFocus '这里combo1.text=""
SendKeys "{TAB}" '这触发Combo1_LostFocus()事件这个时候之前combo2已获得焦点
End SubPrivate Sub Combo1_LostFocus()
If Combo1.Text = "" Then
Combo1.SetFocus '这段让combo1获得焦点 同时combo2也失去焦点触
'发Combo2_LostFocus()事件 在事件代码中combo2
'又使combo2获得焦点 同时combo1又失去焦点触
'发Combo1_LostFocus()事件....就这样成死循环
'在Form_Activate()事件中在sendkey "{Tab}"前
'加上Combo1.ListIndex = 0 可暂时避免死循环
End If
End SubPrivate Sub Combo2_LostFocus()
If Combo1.Text = "" Then
Combo2.SetFocus '使combo2获得焦点 同时combo1又失去焦点触
'发Combo1_LostFocus()事件
End If
End Sub
SendKeys "{TAB}" 只是用代码模拟TAB从Combo1跳到Combo2.我要确保Combo1,Combo2不能为空,用户可能什么也没选就TAB,怎么有机会在sendkey "{Tab}"前加上Combo1.ListIndex = 0暂时避免死循环? 而且我的本意并不是让Combo1.ListIndex = 0,而是让用户选,如果用户可能什么也没选就TAB,
应该是被限制,怎么也无法跳过,从而提醒用户,这是关键项,不能为空.