0

現在、WinFormにスプラッシュ画面を追加しています。私のスプラッシュ画面は別の形です。

this.Text = "";
this.ControlBox = False;

フォームにあるのは、BackgroundImageと

this.BackgroundImageLayout = BackgroundImageLayout.Center 

MainFormの初期化が完了するまで値をインクリメントするProgressBar。

スプラッシュを開くには、ShowDialogではなくShowを使用します。プログレスバーは正常に機能しますが、PictureBoxのBackgroundImageが読み込まれることはありません。私が見るのは、ProgressBarのある白い背景だけです。

ProgressBarをインクリメントするのと同じメソッドでSplashScreen.Show()を使用します。このメソッドは、MainFormのコンストラクターから呼び出されるメソッドで呼び出されます。

別のスレッドでSplashScreen.Showを使用してみましたが、同じ問題が発生しました。ご協力いただければ幸いです。必要に応じて、さらに情報を提供させていただきます。

解決済み:

独自のスレッドで開始する場合は、スレッドが終了するとShowがフォームを閉じるため、ShowDialogを使用する必要がありますが、ShowDialogを使用すると、フォームが閉じられるまでスレッドは実行されたままになります。みんなの助けてくれてありがとう。

4

2 に答える 2

3

私の推測では、メッセージ キューをブロックしていると思われますが、それ以上のコードを確認しないと確信が持てません。

このスプラッシュ スクリーン プロジェクトをご覧になることをお勧めします。以前に使用したことがあります。よく働く。

http://www.codeproject.com/Articles/5454/A-Pretty-Good-Splash-Screen-in-C

とりわけ、そのプロジェクトは別のスレッドでスプラッシュ スクリーンを実行して、応答性を維持し、メッセージ キューのブロックを防ぎます。

于 2012-05-04T19:36:22.327 に答える
1

問題は、スプラッシュ スクリーンがメイン スレッドに表示されていることです。メイン スレッドはすぐにアプリケーションを初期化する他の作業を実行し、スプラッシュ スクリーンを描画する機会がありません。

スプラッシュ スクリーンを独自のスレッドで実行して、きれいに描画できるようにする必要があります。http://msdn.microsoft.com/en-us/library/aa446493.aspxを参照してください。

于 2012-05-04T19:36:59.183 に答える