如何判断VB控件数组同时失去焦点
我在设计时遇到一问题,请高手解答,谢谢!意图:一控件数组Check1(有4个CheckBox控件),当数控件数组失去焦点后,即移动隐藏控件数组。所遇困难:控件数组的Los...
我在设计时遇到一问题,请高手解答,谢谢!
意图:一控件数组Check1( 有4个CheckBox控件),当数控件数组失去焦点后,即移动隐藏控件数组。
所遇困难:控件数组的LostFocus事件只能判断其中的一个CheckBox控件是否失去焦点,如用以下代码会导致在控件数组中内部选择CheckBox控件时,都会触发LostFocus事件(一个控件得到了焦点,另一个必然推动焦点),使整个控件数组移动隐藏,不能实现意图。
Private Sub Check1_LostFocus(Index As Integer)
Check1.move -300,-300
End Sub
如果能判断VB控件数组同时失去焦点的话,问题就能解决,请高手指点。 展开
意图:一控件数组Check1( 有4个CheckBox控件),当数控件数组失去焦点后,即移动隐藏控件数组。
所遇困难:控件数组的LostFocus事件只能判断其中的一个CheckBox控件是否失去焦点,如用以下代码会导致在控件数组中内部选择CheckBox控件时,都会触发LostFocus事件(一个控件得到了焦点,另一个必然推动焦点),使整个控件数组移动隐藏,不能实现意图。
Private Sub Check1_LostFocus(Index As Integer)
Check1.move -300,-300
End Sub
如果能判断VB控件数组同时失去焦点的话,问题就能解决,请高手指点。 展开
2个回答
展开全部
Option Explicit
Private Declare Function GetFocus Lib "user32" () As Long
Private Sub Check1_LostFocus(Index As Integer)
Dim i As Long, hWndFocus As Long
hWndFocus = GetFocus()
For i = 0 To 5
If hWndFocus = Check1(i).hwnd Then Exit For
Next
If i > 5 Then
For i = 0 To 5
Check1(i).Visible = False
Next
End If
End Sub
如是即可
追问
按照方法解决了我的问题,谢谢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询