【问题标题】:Activate MessageBox dialog of the C# Win FormC# Winform 的激活消息框对话框
【发布时间】:2015-08-18 14:06:08
【问题描述】:

我有一个托盘应用程序。

单击它的托盘图标时,它会显示()一种形式。 然后那个窗体 Show()s 一个 MessageBox。

然后我会在它的窗口外点击让它失去焦点。

现在,就像通常发生的那样,当我单击表单的窗口时,MessageBox 会闪烁一次并获得焦点。

我想要做的是,如果我点击托盘图标,MessageBox 应该再次获得焦点。

在托盘图标上单击,执行 form.Activate() 也不会将焦点放在 MessageBox 窗口上!但会激活表单窗口,使 MessageBox 漂浮在焦点集中的表单窗口上。

你能帮我实现这个行为吗?

谢谢。

【问题讨论】:

标签: c# winforms messagebox system-tray


【解决方案1】:

试试这个:

        notifyIcon.DoubleClick += delegate {
            form.Activate();
            form.Focus();
            MessageBox.Show(form, "text", "caption");
            form.WindowState = FormWindowState.Normal;
        };

【讨论】:

  • MessageBox 已经存在,点击后,我需要让它成为焦点!
  • 如果可能,请在显示消息框之前致电Activate()Focus()。如果这不可行,那么您可以尝试在消息框窗口中找到Handle,然后找到SendMessage(Handle, WM_NCACTIVATE, (IntPtr) 1, (IntPtr) 0)
猜你喜欢
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多