应用程序“停用"事件

问题描述:

我正在寻找类似于 'Form.Deactivate' 事件但每个应用程序的东西.如果我在我的 MainForm 上使用 Form.Deactivate 事件,即使我打开一个以我的 MainForm 为父级的模态对话框,这个事件也会被触发.

I'm looking for something similar with 'Form.Deactivate' event but per application. If I use Form.Deactivate event on my MainForm this event is fired even when I open a modal dialog that has as parent my MainForm.

总而言之,当我的应用程序被停用时,我需要触发一个事件.

In conclusion I nedd an event that is fired when my application was deactivated.

这是一个奇怪的遗漏,但很容易修复.将此粘贴到您的启动表单中:

It is an odd omission but easily fixed. Paste this in your startup form:

protected void OnActivateApp(bool activate) {
  Console.WriteLine("Activate {0}", activate);
}
protected override void WndProc(ref Message m) {
  // Trap WM_ACTIVATEAPP
  if (m.Msg == 0x1c) OnActivateApp(m.WParam != IntPtr.Zero);
  base.WndProc(ref m);
}