1

我有一个 Windows 窗体应用程序,它在最小化时会转到系统托盘。当我收到一条消息弹出我的应用程序时,它将调用 ShowWindowFromTray() 函数。我不想将焦点转移到具有焦点的应用程序上,因为它可能会打断用户正在做的事情。

private void ShowWindowFromTray()
{
    this.Show();
    this.WindowState = FormWindowState.Normal;
}

顺便说一句,此应用程序具有选项,用户可以检查该应用程序是否始终位于所有其他窗口的顶部或 TopMost。

4

1 回答 1

3

使用带有SW_SHOWNA的 ShowWindow() API 代替 Show() :

    private const int SW_SHOWNA = 4;

    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

    private void ShowWindowFromTray()
    {
        ShowWindow(this.Handle, SW_SHOWNA);
    }
于 2013-05-11T03:20:17.593 回答