【问题标题】:Application 'Deactivate' event应用程序“停用”事件
【发布时间】:2009-11-17 09:21:45
【问题描述】:

我正在寻找与“Form.Deactivate”事件类似但每个应用程序的事件。如果我在 MainForm 上使用 Form.Deactivate 事件,即使我打开一个以我的 MainForm 为父的模式对话框,也会触发此事件。

总之,我需要一个在我的应用程序被停用时触发的事件。

【问题讨论】:

  • 您将如何应对这种情况?
  • 这个similar post 应该是一个很好的起点。
  • 我将开始使用“FileSystemWatcher”组件查看一些文件夹。

标签: winforms


【解决方案1】:

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

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

【讨论】:

  • 我认为这种情况下存在win32错误。如果我通过单击任务栏(我的应用程序)最小化我的应用程序,该应用程序似乎仍处于激活状态。这可以通过某种方式解决吗?
  • 当我尝试时效果很好。确保实际上有另一个应用程序可以获得焦点。使用 Resize 事件检查 WindowState 以检测用户最小化窗口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
相关资源
最近更新 更多