检测应用 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)
如果您想收到有关应用程序状态的通知,您可以处理所有表单的 Activate
和 Deactivate
事件。
private void f_Deactivate(object sender, EventArgs e)
{
BeginInvoke(new Action(() =>
{
if (Form.ActiveForm == null)
Text = "App Deactivated.";
else
Text = "Still Active";
}));
}
如何检测用户何时从多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)
如果您想收到有关应用程序状态的通知,您可以处理所有表单的 Activate
和 Deactivate
事件。
private void f_Deactivate(object sender, EventArgs e)
{
BeginInvoke(new Action(() =>
{
if (Form.ActiveForm == null)
Text = "App Deactivated.";
else
Text = "Still Active";
}));
}