如何检测用户何时从多窗口应用程序更改焦点(例如alt + tab)。
我想检测什么时候应用程序窗口都没有活动/聚焦。
始终显示第一个窗口,但用户最多可以使用四个窗口(这些窗口都不显示为对话框)。
答案 0 :(得分:1)
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";
}));
}