2011-06-22 98 views
3

我在做win表單項目(C#)。在那個項目中,我願意添加歡迎屏幕。所以我創建了一個歡迎屏幕。但是,它想顯示幾個小部件並自動關閉並打開登錄屏幕。如何在Winform中顯示歡迎屏幕?

System.Threading.Thread.Sleep(1500); 
      LogIn n = new LogIn(); 
      n.Show(); 

我試着在窗體顯示的代碼中加載,激活事件。 BUt沒用。任何人都知道該怎麼做?

My welcome screen -

+0

幾分鐘?不要忘記卸載程序。 –

+3

[C#啓動畫面問題]的可能重複(http://stackoverflow.com/questions/392864/c-splash-screen-problem) –

回答

4

Here's a tutorial解釋如何使一個啓動畫面。

+0

謝謝。 Iam使用thered來顯示Splach屏幕。 Thread th = new Thread(new ThreadStart(DoSplash)); th.Start(); Thread.Sleep(3000); th.Abort(); Thread.Sleep(1000); – Sagotharan

2

在Program.cs中爲閃屏添加一行。在啓動畫面中運行計時器並關閉表格。

私有靜態無效的主要(){

 Application.EnableVisualStyles(); 

     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new FSplash()); // This is your splash form << added 
     Application.Run(new FMain()); 
    } 
1

在我看來,你不能爲.NET應用程序在.NET中創建一個啓動畫面:

的目的啓動屏幕是分散用戶長時間的等待時間,直到應用程序加載,啓動和初始化。

由於.NET應用程序本身已經有一些啓動時間,所​​以在這段時間內沒有可用的啓動畫面。

我的解決方案

所以在我的申請,我這樣做的方式如下:

  1. 寫一個小的,微小的原生C++應用程序。
  2. 當C++應用程序啓動時,顯示最頂部的位圖(沒有邊框的窗口)。
  3. 讓C++應用程序啓動實際的.NET應用程序。
  4. .NET應用程序啓動,並在完成啓動和初始化時,它會通知C++應用程序關閉。這是通過IPC完成的。

進程間通信完成方式如下:

  1. 的C++應用程序寫入臨時文件。
  2. 調用.NET應用程序時,文件名作爲命令行參數傳遞。
  3. C++應用程序定期輪詢文件是否存在。
  4. 只要啓動畫面必須隱藏,.NET應用程序就會立即刪除文件。
  5. 只要臨時文件不再存在(或發生超時),C++應用程序就會立即存在。

我知道這不是100%完美,這是我從幾年前開始開發.NET應用程序以來最合適的解決方案。

+1

當他知道C++時,他可以做到這一點。 –

+3

您的意見將是錯誤的。它是一個簡單的任務,用.NET Framework中的任何語言創建啓動畫面。你的做法既矯枉過正,又錯誤。 –

+1

感謝@Ramhound爲您的平衡評論。 –