在form窗体里面 寻找当前焦点的控件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace PrintDatas
{
    public static class SelectFocusInControls
    {
        // DLL调用注册  
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
        private static extern IntPtr GetFocus();
        /// <summary>  
        /// 当前拥有焦点的控件  
        /// </summary>  
        public static Control GetFocusedControl(this Control formControl)
        {
            Control focusedControl = null;
            try
            {
                IntPtr focusedHandle = GetFocus();
                if (focusedHandle != IntPtr.Zero)
                    focusedControl = Control.FromChildHandle(focusedHandle);
            }
            catch { }
            return focusedControl;
        }
    }
}

 

/// <summary>  
        ///  设置当前获得焦点的控件的下一控件(Tab顺序)为当前焦点控件  
        /// </summary>  
        public static void SetNextControlFocused(this Control formControl)
        {
            Control ctlFocused = GetFocusedControl(formControl);
            if (ctlFocused != null)
            {
                Control ctl = formControl.FindForm().GetNextControl(ctlFocused, false);
                if (ctl == null)
                {
                    ctl = formControl.FindForm().GetNextControl(ctlFocused, true);
                }
                if (ctl != null)
                {
                    ctl.Focus();
                }
            }
        }

 

posted @ 2013-10-11 11:53  JasonGu0  阅读(437)  评论(0编辑  收藏  举报