The .Net framework libraries does not provide you an API to query for the focused Control. You have to invoke a windows API to do so:
[C#]
public class MyForm : Form
{
[DllImport('user32.dll', CharSet=CharSet.Auto, CallingConvention=CallingConvention.Winapi)]
internal static extern IntPtr GetFocus();
private Control GetFocusedControl()
{
Control focusedControl = null;
// To get hold of the focused control:
IntPtr focusedHandle = GetFocus();
if(focusedHandle != IntPtr.Zero)
// Note that if the focused Control is not a .Net control, then this will return null.
focusedControl = Control.FromHandle(focusedHandle);
return focusedControl;
}
}
[VB.Net]
Public Class Form1
’ Declare the GetFocused method here:
_
Public Shared Function GetFocus() As IntPtr
End Function
Private Function GetFocusedControl() As Control
Dim focusedControl As Control = Nothing
’ To get hold of the focused control:
Dim focusedHandle As IntPtr = GetFocus()
If IntPtr.Zero.Equals(focusedHandle) Then
’ Note that if the focused Control is not a .Net control, then this will return null.
focusedControl = Control.FromHandle(focusedHandle)
End If
Return focusedControl
End Function
End Class
Share with