弹来弹去跑马灯!

WFP loading 窗口显示 SplashScreen

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

 

posted @ 2018-07-31 15:05  wgscd  阅读(442)  评论(1编辑  收藏  举报