当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » C#  » 图形界面开发/GUI/CGI
分享到: 
收藏 +0
1
在Window桌面应用程序中,可以通过这段代码获取当前获的焦点的控件,以及设置下一个应该获取焦点的控件。
标签: C# Studio Windows

代码片段(1) [全屏查看所有代码]

1. [代码]WinForm获取当前焦点控件     跳至 [1] [全屏预览]

// DLL调用注册
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
private static extern IntPtr GetFocus();

/// <summary>
/// 当前拥有焦点的控件
/// </summary>
/// <param name="formControl"></param>
/// <returns></returns>
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();
        }
    }
}


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

开源从代码分享开始 分享代码
逆风扬的其它代码 全部(2)...