2009-10-27 44 views
5

我按照How to: Add a Splash Screen to a WPF Application概述的簡單步驟向我的WPF應用程序添加啓動畫面。當我啓動應用程序時,會顯示飛濺圖像,然後彈出主窗口,飛濺圖像消失。WPF應用程序窗口出現在SplashScreen頂部

我的問題是,當主窗口彈出時,它會出現在飛濺圖像的頂部。然後,當飛濺圖像開始淡出時,飛濺圖像再次彈出到頂部。最終結果是,當主窗口出現時,飛濺圖像在一瞬間消失。

如何強制主窗口出現在飛濺圖像下,以便飛濺圖像不會消失?

回答

1

這不是默認行爲,你必須有一些手動對焦主窗口的代碼?

這可能是更容易只是關掉褪色帶着幾分像這樣的代碼手動:

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

_splash.Show(false);

_splash.Close(TimeSpan.Zero);

+0

我會看看是否有一些代碼正在做焦點;它可能來自第三方組件。由於我使用資源的Build Action添加了啓動畫面,因此我將如何像訪問一樣訪問它......? – 2009-10-28 15:55:44

+0

在你的app.cs文件中聲明一個全局字段「protected SplashScreen _splash;」。在構造函數中有上面兩行代碼。在所有啓動邏輯完成後,在方法結尾處的OnStartup事件中插入上面的最後一行代碼。 應該是這樣。 – Daniel 2009-10-29 00:29:39

0

不知道這是否會幫助,但如果您將Splash屏幕的所有者設置爲當前表單,那麼這應該可以做到這一點?

_splash.Owner = this; 

否則,你可以看看這裏:

Splash Screen Example

這可能幫助了。

6

在.NET 4.0中,已將一個overload添加到Show方法中,該方法允許在啓動畫面窗口上設置窗口樣式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」當然是嵌入在應用程序資源中的飛濺圖像的標識符。