检测应用程序何时激活

时间:2010-04-11 01:42:17

标签: winforms

在MDI应用程序中哪个事件可以使用子类Form类来检测应用程序何时变为活动状态?

我尝试了Form.Acivated事件,但只有在激活表单时才会发生,而在应用程序获得焦点时则不会。

3 个答案:

答案 0 :(得分:2)

获取Activated事件的是MDI父表单。您可以在子表单的Load事件中订阅该事件。请注意,您必须确保在孩子关闭或您泄漏子表单实例时取消订阅该事件。看起来像这样:

protected override void OnLoad(EventArgs e) {
  var main = this.MdiParent;
  main.Activated += main_AppActivated;
  this.FormClosed += (o, ea) => main.Activated -= main_AppActivated;
}

void main_AppActivated(object sender, EventArgs e) {
  // Etc...
}

答案 1 :(得分:1)

您是否尝试过GotFocus活动?

答案 2 :(得分:1)

虽然WPF has such a notion,WinForms并不是我所知的;你需要使用表单级事件(比如早期答案中的GotFocus)。