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;
}