public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { SplashScreen splashScreen = new SplashScreen("pic.jpg"); splashScreen.Show(true); base.OnStartup(e); } }
这个系统自带的 SplashScreen 不是太好,不能自定义。。。
下面是我自定义的 SplashWind :
canCloseSplash 用来判断是否可以关闭这个loading自定义窗口。原理是在主窗口的Loaded事件里设置 App.canCloseSplash =true;
在自定义的SplashWind 里用个计时器检查 App.canCloseSplash 是否=true,等于的话就关闭自己。
public partial class App : System.Windows.Application { public static bool canCloseSplash = false; protected override void OnStartup(System.Windows.StartupEventArgs e) { SplashWind splashWind = new SplashWind(); splashWind.Show(); // System.Windows.SplashScreen splashScreen = new System.Windows.SplashScreen("1.jpg"); // splashScreen.Show(true,true); base.OnStartup(e); } }
public partial class SplashWind : Window { public SplashWind() { InitializeComponent(); Topmost = true; t.Interval = TimeSpan.FromMilliseconds(30); t.Tick += new EventHandler(t_Tick); t.Start(); } DispatcherTimer t = new DispatcherTimer(); void t_Tick(object sender, EventArgs e) { if (App.canCloseSplash) { t.Stop(); Close(); } } }
SplashWind UI:
<Window x:Class="TestWebBrowser.SplashWind" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="SplashWind" Height="313" Width="509" ResizeMode="NoResize" WindowStyle="None" ShowInTaskbar="False" WindowStartupLocation="CenterScreen" Background="Blue" BorderThickness="5" BorderBrush="AliceBlue" > <Grid> <Label Foreground="White" FontSize="22" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">Loading........</Label> </Grid> </Window>
主窗口Loaded事件里告诉SplashWind可以关闭了:
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
App.canCloseSplash = true;
}