C#FormWindowState.Normal不要窃取焦点

时间:2013-05-11 02:14:29

标签: c# winforms focus windowstate

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

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

BTW此应用程序具有以下选项:用户可以检查应用程序是否始终位于顶部或TopMost是否位于所有其他窗口上。

1 个答案:

答案 0 :(得分: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);
    }