WPF启动画面,直到Windows结束加载
发布时间:2020-12-14 05:38:10 所属栏目:Windows 来源:网络整理
导读:我有一个应用程序,在窗口加载时消耗大量时间. 在Window_load事件中,我从数据库中读取了一些控件的状态和名称. 我想做一个闪屏,它会在窗口完全加载后结束. 我已尝试使用此示例http://www.codeproject.com/KB/dialog/wpf_animated_text_splash.aspx,但在主窗口
我有一个应用程序,在窗口加载时消耗大量时间.
在Window_load事件中,我从数据库中读取了一些控件的状态和名称. 我想做一个闪屏,它会在窗口完全加载后结束. 我已尝试使用此示例http://www.codeproject.com/KB/dialog/wpf_animated_text_splash.aspx,但在主窗口完全加载之前启动屏幕关闭,我的主窗口显示为白色且未完全加载. 我是wpf的初学者,我不知道在主窗口完全加载之前我怎么能有一个保持在屏幕上的闪屏. 请举个例子. 我的启动画面代码: public partial class SplashWindow : Window { Thread loadingThread; Storyboard Showboard; Storyboard Hideboard; private delegate void ShowDelegate(string txt); private delegate void HideDelegate(); ShowDelegate showDelegate; HideDelegate hideDelegate; public SplashWindow() { InitializeComponent(); showDelegate = new ShowDelegate(this.showText); hideDelegate = new HideDelegate(this.hideText); Showboard = this.Resources["showStoryBoard"] as Storyboard; Hideboard = this.Resources["HideStoryBoard"] as Storyboard; } private void Window_Loaded(object sender,RoutedEventArgs e) { loadingThread = new Thread(load); loadingThread.Start(); } private void load() { Thread.Sleep(6000); this.Dispatcher.Invoke(showDelegate,"first data to loading"); Thread.Sleep(6000); //load data this.Dispatcher.Invoke(hideDelegate); Thread.Sleep(6000); this.Dispatcher.Invoke(showDelegate,"second data loading"); Thread.Sleep(6000); //load data this.Dispatcher.Invoke(hideDelegate); Thread.Sleep(6000); this.Dispatcher.Invoke(showDelegate,"last data loading"); Thread.Sleep(6000); //load data this.Dispatcher.Invoke(hideDelegate); //close the window Thread.Sleep(6000); this.Dispatcher.Invoke(DispatcherPriority.Normal,(Action)delegate() { Close(); }); } private void showText(string txt) { txtLoading.Text = txt; BeginStoryboard(Showboard); } private void hideText() { BeginStoryboard(Hideboard); } } 我将在我的MainWindow构造函数中调用这个启动画面: new SplashWindow().ShowDialog(); 但是我的MainWindow加载功能将在Splash Window完成后显示. 谢谢! 解决方法
如果使用内置的
SplashScreen 类,则可以调用
Show(false) 来指定您将负责关闭启动画面.然后,您可以使用
Close() 方法关闭它.
请注意,SplashScreen类仅支持显示静态图像.这样做有很好的理由 – 尽快将闪屏放在用户面前. 代码看起来像这样: static class Entry { static void Main(string[] args) { var splashScreen = new SplashScreen("path/to/your/image.png"); splashScreen.Show(false); InitializeLogging(); InitializeServices(); InitializeUserInterface(); InitializeWhateverElseYouNeed(); splashScreen.Close(TimeSpan.FromSeconds(1)); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- win10搭建ftp环境
- windows server 2003 重
- windows – DirectDraw分层窗口颜色键?
- Windows/Linux命令查看文件MD5,SHA1,SHA256 文件校验
- exchange-2010 – 恢复了2天的Microsoft Exchange – 丢失了
- libintl3和libiconv2 for gnu make在windows上,需要在MinGW
- 如何使用WSUS回滚或卸载Microsoft补丁?
- mono gtk# – hello world部署到windows
- 如何以编程方式更改当前的Windows主题?
- wpf – Windows演示基础的相关热图
推荐文章
站长推荐
- windows – 为什么依赖walker显示32位dll为64位?
- 将我的DLL部署到GAC,引用其他DLL不在GAC中
- Windows Phone 8 – GetGeopositionAsync不返回
- windows-server-2008-r2 – 经常被锁定的用户帐户
- wpf – Windows 10所有DPI设置上的所有图标分辨率
- 在Windows上的PHP proc_open
- 如何在Window Builder中添加SwingX调色板?
- winapi – Win32在父窗口中捕获子窗口消息
- Windows下的Python 3的open()的默认编码. sys.ge
- xaml – Windows UWP扩展的初始屏幕图像在移动设
热点阅读