检测应用程序窗口何时无法激活/聚焦

时间:2016-11-17 17:51:40

标签: c# winforms .net-4.0

如何检测用户何时从多窗口应用程序更改焦点(例如alt + tab)。

我想检测什么时候应用程序窗口都没有活动/聚焦。

始终显示第一个窗口,但用户最多可以使用四个窗口(这些窗口都不显示为对话框)。

1 个答案:

答案 0 :(得分:1)

Form具有ContainsFocus属性,用于指示表单或其子控件之一是否具有输入焦点。您可以检查此属性是否包含所有打开的表单,以检测应用程序是否包含焦点:

var isActive = Application.OpenForms.Cast<Form>().Any(x=>x.ContainsFocus);

另外作为另一种选择:

var isActive = (Form.ActiveForm != null)

如果您希望收到有关申请状态的通知,您可以处理所有表单的ActivateDeactivate表格事件。

private void f_Deactivate(object sender, EventArgs e)
{
    BeginInvoke(new Action(() =>
    {
        if (Form.ActiveForm == null)
            Text = "App Deactivated.";
        else
            Text = "Still Active";
    }));
}