Winform获取当前拥有焦点的控件

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;
          }
}
posted @ 2009-05-19 16:50  飞扬跋扈  阅读(2022)  评论(0编辑  收藏  举报