2009-10-27 10 views
5

私はHow to: Add a Splash Screen to a WPF Applicationで簡単な手順を実行して、WPFアプリケーションにスプラッシュ画面を追加しました。アプリケーションを起動すると、スプラッシュイメージが表示され、メインウィンドウがポップアップし、スプラッシュイメージが消えます。SplashScreenの上にWPFアプリケーションウィンドウが表示される

私の問題は、メインウィンドウがポップアップすると、スプラッシュイメージの上に表示されるということです。その後、スプラッシュイメージがフェードアウトすると、スプラッシュイメージが再びトップにポップアップします。最終的な結果は、メインウィンドウが表示されると、スプラッシュイメージが数秒間消えてしまうことです。

スプラッシュイメージが表示されなくなるように、メインウィンドウをスプラッシュイメージの下に表示するにはどうすればよいですか?

答えて

1

これはデフォルトの動作ではありません。手動でメインウィンドウに焦点を合わせるコードが必要ですか?

ちょうどこのようなコードのビットを使って手動でフェードをオフにする方が簡単かもしれ:

_splash = new SplashScreen("LoadingScreen.png");

_splash.Show(false);

_splash.Close(TimeSpan.Zero);

+0

フォーカスを行っているコードがあるかどうかを調べます。サードパーティコンポーネントからのものかもしれません。リソースのビルドアクションを使用してスプラッシュ画面を追加したので、あなたのようにアクセスする方法は? –

+0

app.csファイルで、グローバルフィールド「protected SplashScreen _splash;」を宣言します。コンストラクタでは、上記のコードの最初の2行があります。すべての起動ロジックが完了した後、メソッドの最後にあるOnStartupイベントで、上記のコードの最後の行を挿入します。 これはそうだと思います。 – Daniel

0

ない、これが役立つかどうかわからが、スプラッシュスクリーンの所有者を現在のフォームに設定した場合、これはおそらくトリックを行うべきでしょうか?

_splash.Owner = this; 

そうしないと、あなたはここに見ることができます:

Splash Screen Example

これはあまりにも役立つかもしれません。

6

.NET 4.0では、スプーッシュスクリーンウィンドウにウィンドウスタイルWS_EX_TOPMOSTを設定するShowメソッドにoverloadが追加されました。このようなコードにスプラッシュ画面を表示:

SplashScreen splash = new SplashScreen("SplashScreen.png"); 
splash.Show(autoClose: true, topMost: true); 

私はApp.xaml.cs.のメソッドから

protected override void OnStartup(StartupEventArgs e) 

ことを呼び出します

"SplashScreen.png"はもちろん、アプリケーションのリソースに埋め込まれたスプラッシュイメージの識別子です。

関連する問題