2011-07-01 12 views
0

私はC#を使用してプログラムを作成していますが、ほぼ終了しています。プログラムの名前などを示す5秒単位でロードするウェルカムフォームを含めると面白いでしょう。 ..ようこそc#

enter image description here

...このMicrosoft Wordのようなが、私はこれを行うするかどうかはわかりません。私はいくつかのアドバイスをして欲しいです....

+10

アプリケーションの読み込みに時間がかかる場合を除き、これを行わないでください。 Officeはロードに時間がかかるため、Microsoftがこれを使用します。 –

+0

あなたに興味があるかもしれませんが、ユーザーには面倒です。 – JohnFx

答えて

4

あなたはWPFを使用している場合はSystem.Windows.SplashScreenオブジェクトを使用することができます。

WinFormsでは少し難しくなっていますが、example located hereを使用して始めましょう。

スプラッシュ画面は、何か起きているような気分になるようにアプリケーションが読み込まれるまでに時間がかかる場合を想定しています。アプリケーションの読み込みを5秒遅らせる場合は、実際にはとなり、ユーザーのエクスペリエンスは低下します。 5秒は非常に長い時間です...

+0

WinFormsにはありません。 C#で。 VB.NETには[My.Application.SplashScreen](http://msdn.microsoft.com/en-us/library/1t310742(v = VS.90).aspx)プロパティがあります。 – GSerg

+0

はい、VB.NETには、このような便利なクラスがApplicationServices名前空間に多数あります。 – LBushkin

+0

ありがとうございました!!!私はあなたがユーザーのための経験を劣化させることについて正しいと思いますが、私はとにかくそれを試してみたいだけです。あなたの例は完璧です...ありがとう – brisonela

3

まあ、フォームを作成し、そのボーダーをnoneに設定し、イメージを置いて、メインフォームを開く5秒後に起動するwinformsタイマーをセットします。行く。

しかし、より複雑なスプラッシュ画面(リサイズ)がなどをクリッピング、GDI +が必要ですが、これは私が推測行います...

1

私はこの使用して「System.Theading」を実行して、これは私のために非常に適しています。次のコードでは、別のスレッドで "スプラッシュ画面"を起動します。アプリケーション(MainForm()の下の私の例では)がロードまたは初期化されています。まず、あなたの "main()"メソッド(program.csファイルの名前を変更していない限り)にスプラッシュ画面を表示する必要があります。これは、起動時にユーザーを表示したいWinFormまたはWPFフォームになります。あなたは、次のようなものが必要あなたのスプラッシュ画面のコードで

[STAThread] 
    static void Main() 
    { 
     // Splash screen, which is terminated in MainForm.  
     SplashForm.ShowSplash(); 

     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     // Run UserCost. 
    Application.Run(new MainForm()); 
    } 

を::

public partial class SplashForm : Form 
{ 

    // Thredding. 
    private static Thread _splashThread; 
    private static SplashForm _splashForm;  

    public SplashForm() 
    { 
     InitializeComponent(); 
    } 

    // Show the Splash Screen (Loading...)  
    public static void ShowSplash()  
    {   
     if (_splashThread == null)   
     {    
      // show the form in a new thread    
      _splashThread = new Thread(new ThreadStart(DoShowSplash));    
      _splashThread.IsBackground = true;    
      _splashThread.Start();   
     }  
    }  

    // Called by the thread  
    private static void DoShowSplash()  
    {   
     if (_splashForm == null)    
      _splashForm = new SplashForm();   
     // create a new message pump on this thread (started from ShowSplash)   
     Application.Run(_splashForm); 
    }  

    // Close the splash (Loading...) screen  
    public static void CloseSplash()  
    {   
     // Need to call on the thread that launched this splash   
     if (_splashForm.InvokeRequired)    
      _splashForm.Invoke(new MethodInvoker(CloseSplash));   
     else    
      Application.ExitThread();  
    } 

} 

これは、あなたがして進行させる別のバックグラウンドスレッドでスプラッシュフォームを起動し、次のようにこれは)(メインから打ち上げですメインアプリケーションのレンダリングを同時に行います。終えると、アプリケーションで使用すると、デフォルトコンストラクタ内で、次を配置初期化されたとき、スプラッシュスクリーンを閉鎖するには(あなたがしたい場合、あなたは、コンストラクタをオーバーロードできます):

これはあなたのすべて自明であるとあなた自身でコードの正確な作業を確立できるはずです。それがあなたを助けることを願っています

+0

注:この例ではWinFormsを使用しています。このコードでは、特にマルチコアマシンを使用している場合は、アプリケーションの初期化シーケンスをあまり遅くしてはいけません。しかし、あなたのアプリが素早くレンダリングされているならば、それはおそらく必要ないでしょう。 – MoonKnight

関連する問題