极品分享

C# WPF 制作启动初始界面(用窗体)

一般一个软件运行之前都会有一个闪屏界面,称之为SplashScreen。下面介绍制作启动界面的方法。

1.SplashScreen类

WPF中提供了SplashScreen这样一个类,可以用于制作启动界面。这种方法似乎只能显示一张图片,具体没有深入研究,我用的不是这种方法。MSDN 这里提供了一个使用SplashScreen的简单说明。关于这个类的一些细节这里 有一篇文章做了一些说明。大家可以研究一下。

2.启动界面做主程序启动+事件回调

这种方法就是创建两个窗口,一个用于做主界面,另一个用于做启动界面。启动界面作为主程序。同样在 MSDN 这里提供了一个简单的示例。这个示例已经足够说明问题。我用VS2010创建了一个类似的项目上传到了百度云。链接: http://pan.baidu.com/s/1hs9Opzm 密码: 8gxa 。感兴趣的可以下载看一下。

这个项目的主要思想是将SplashWindow作为主程序启动。在里面创建了一个MainWindow的对象并绑定一个readytoshow的事件。在事件触发之前,splashwindow里的dispathertimer会不断溢出并执行splashAnimationTimer_Tick以更新控件显示的内容。当readytoshow事件触发后调用m_mainWindow_ReadyToShow将主窗口显示出来。效果图如下

1-1_20170222155120235.jpg


上图是程序启动前的启动界面,有几个动态的点儿。


1-2_20170222155135798.jpg



上图是mainwindow启动之后的界面。

3.主窗口做主程序启动

在2中的方法splashwindow是不能关闭的,因为他是主程序,他的关闭代表主程序退出。最多将可见性设为不可见但依然占用着内存。因此最后我还是决定在主窗口初始化控件之后创建启动界面。在mainwindow的构造函数中添加了如下的代码

this.InitializeComponent();  
//调用splashscreen  
Splash SplWnd = new Splash();  
SplWnd.ShowDialog();


其中Splash就是我设计的启动界面。这种实现方式的好处是启动界面可以被销毁。

在其.cs文件中我使用了一个定时器。一定时间之后这个界面会关闭。当然目前这个界面还没有太多的用途。以后可能会在里面做一些初始化的工作。启动界面部分的代码我也上传到百度云。链接:http://pan.baidu.com/s/1eS5iHgQ 密码: kfyv

对xaml文件和C#不太熟悉的朋友建议先做一些初步的了解再阅读相应的代码。我的建议是expression blend和VS同时打开你的项目,这样在任意一个开发环境中更改了项目都可以自动更新到另一个开发环境,一个用于界面设计与调整主要针对xaml文件,另一个编写c#代码,针对.cs文件。程序的启动界面如下图所示。



1-3_20170222161207965.jpg



说明

感觉写文章还是挺难的,因为想说清楚一件事挺难的,有时不明深浅,很多地方不知说到什么程度为好,如果读者朋友有什么建议可以留言。我尽力改正不足。

源码下载:

SplashScreenClass.zip

SplashScreenWindowTest.zip


参考:

http://blog.csdn.net/hitgavin/article/details/56484532?locationNum=9&fps=1



2017-04-14 0 /
NET学习
/
标签: 

评论回复

回到顶部