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();
}
}
}