Determine how a control got the focus

Determine how a control got the focus

At times it might be convenient to know how a given control got the focus, namely by means of the Tab key, an associated hotkey or a click of the mouse. You can learn this information through the GetKeyState API function, that returns the current state of a key. Here is a simple function that is meant to be called from within the GotFocus event of a control

Private Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal _    nVirtKey As Long) As IntegerFunction GotFocusMethod() As Integer    If GetKeyState(vbKeyTab) < 0 Then        If (GetKeyState(vbKeyShift) < 0) Then            ' Shift-Tab key is pressed            GotFocusMethod = 4        Else            ' Tab key is pressed            GotFocusMethod = 1        End If    ElseIf GetKeyState(vbKeyMenu) < 0 Then        ' Alt key is pressed (hotkey activation)        GotFocusMethod = 2    ElseIf GetKeyState(vbLeftButton) < 0 Then        ' mouse left button is pressed        GotFocusMethod = 3    End IfEnd Function

This function returns 1 if the control got the focus by mean of the Tab key, 2 if a hotkey was pressed, 3 if the mouse was clicked, 4 if Shift-Tab was pressed, 0 if it cannot determine the method used (probably programmatically through a SetFocus method).

Thanks to Scott B. Kardos for adding the code that tests the Shift-Tab key.

See also  5 Tips for Working With an Onsite Interpreter

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist