2014-01-21 66 views
0

我搜索了論壇,但仍然沒有答案似乎是正確的。Windows窗體總是在頂部不工作c#

我需要在用戶在瀏覽器中運行時顯示來自systray應用程序的消息通知。

我希望將此通知顯示在所有內容之上,但即使將其設置爲TopMost或TopLevel或BringToFront或Focus,也無法達到我想要的效果。

我正在使用一個簡單的Windows窗體,並使用showstartialize來從systray應用程序中顯示它。

請幫我:)

PS:如果我從啓動系統托盤應用程序通知形式沒有其他應用程序打開或集中它工作得很好,我只是不能顯示它在活動的瀏覽器窗口

+0

如果最頂層不工作,你可以嘗試使用在Win32 API的 – MattR

+0

SetForeGroundWindow剛試過,但沒有運氣 –

+0

的問題是,我顯示通知從不同的線程一個對話框,然後在UI之一,如果我將ShowDialog移動到UI線程一切正常,但以這種方式我阻止用戶交互... :( –

回答

0
NameOfYourWindow myTopForm = new NameOfYourWindow(); 

myTopForm.Owner = App.Current.MainWindow; 
myTopForm.ShowInTaskbar = false; 
myTopForm.TopMost = true; 
myTopForm.ShowDialog(); 
+0

不起作用,我的所有者應該是全屏打開的瀏覽器應用程序 –

0
#region SetForegroundWindow 
    [DllImport("kernel32.dll", ExactSpelling = true)] 
    public static extern IntPtr GetConsoleWindow(); 
    [DllImport("user32.dll")] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    public static extern bool SetForegroundWindow(IntPtr hWnd); 
    #endregion 
    static void Main(string[] args) 
    { 
     while (true) 
     { 

      SetForegroundWindow(GetConsoleWindow()); 
     } 
    }