2015-09-02 22 views
-1

也許有人可以解釋這種extrange行爲。主Winforms應用程序窗口出現在背景

當我在C#中開發一個Winforms應用程序,然後通過雙擊exe文件構建並運行時,主窗口出現在後臺。要把它放到前臺,我必須點擊任務欄圖標。

奇怪的是,如果我有第二臺顯示器,並瀏覽擴展屏幕內的文件夾,然後雙擊exe文件,主窗口出現在主顯示器。

爲了完成好奇心,如果我在Visual Studio中運行應用程序,主窗口會立即出現,因爲它應該是。

這是在Program.cs文件的主要方法:

[STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     Application.ThreadException += Application_ThreadException; 
     AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 

     Application.Run(new frmMain()); 
    } 

的「if」語句不執行,因爲有沒有運行其它實例。

試圖迫使在別人面前顯示的窗口,我重寫WndProc方法,但它沒有工作:

protected override void WndProc(ref Message m) 
    { 
     if (m.Msg == ControlVisitas.Helpers.SingleInstance.WM_SHOWFIRSTINSTANCE) 
     { 
      ControlVisitas.Helpers.WinApi.ShowToFront(this.Handle); 
     } 

     base.WndProc(ref m); 
    } 

任何幫助將不勝感激。謝謝。

+0

您沒有發佈最重要的代碼。 [不要重新發明輪子](http://www.hanselman.com/blog/TheWeeklySourceCode31SingleInstanceWinFormsAndMicrosoftVisualBasicdll.aspx)。 –

+0

我沒有重新發明輪子......我使用了一個我發現Googleing的圖書館,類似於您發佈的圖書館....但是,這不是問題所在。請發佈最有用的評論。謝謝 – jstuardo

+0

它內置於.NET Framework中。圖書館?好吧,我猜也沒用。 –

回答

0

問題出在Splash Screen。

我剛剛在實際關閉啓動畫面之前放置了主窗體激活方法。