WPFアプリケーションウィンドウがSplashScreenの上に表示されます
-
06-07-2019 - |
質問
で説明されている簡単な手順に従いました。 WPFアプリケーションを使用して、WPFアプリケーションにスプラッシュスクリーンを追加します。アプリケーションを起動すると、スプラッシュ画像が表示され、メインウィンドウがポップアップし、スプラッシュ画像が消えます。
私の問題は、メインウィンドウがポップアップすると、スプラッシュ画像の上に表示されることです。その後、スプラッシュ画像がフェードアウトし始めると、スプラッシュ画像が再び上部にポップアップします。最終的に、メインウィンドウが表示されると、スプラッシュ画像が一瞬消えます。
スプラッシュ画像が消えないように、スプラッシュ画像の下にメインウィンドウを強制的に表示するにはどうすればよいですか?
解決
これはデフォルトの動作ではありません。手動でメインウィンドウにフォーカスするコードが必要ですか?
次のようなコードを使用して、手動でフェードをオフにする方が簡単な場合があります。
_splash = new SplashScreen(" LoadingScreen.png");
_splash.Show(false);
_splash.Close(TimeSpan.Zero);
他のヒント
.NET 4.0では、オーバーロードがショーに追加されましたスプラッシュスクリーンウィンドウでウィンドウスタイルWS_EX_TOPMOSTを設定できるメソッド。次のようなコードでスプラッシュスクリーンを表示します。
SplashScreen splash = new SplashScreen("SplashScreen.png");
splash.Show(autoClose: true, topMost: true);
メソッドから呼び出す
protected override void OnStartup(StartupEventArgs e)
App.xaml.csで。
" SplashScreen.png"もちろん、アプリケーションのリソースに埋め込まれたスプラッシュ画像の識別子です。
これが役立つかどうかはわかりませんが、スプラッシュスクリーンの所有者を現在のフォームに設定した場合、おそらくこれでうまくいくでしょうか。
_splash.Owner = this;
それ以外の場合は、こちらをご覧ください:
これも役立ちます。