检测应用 windows 的 none 何时为 active/focused

Detect when none of app windows is active/focused

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

我想检测应用 windows 的 none 何时为 active/focused。

始终显示第一个 window,但用户最多可以使用四个 windows(其中 none 显示为对话框)。

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