Author:水如烟
关于初始窗体,在这也曾说过,不过因为图片说明的多,是链接到博客园我的博客里的.
如何操作,详见《HOW TO:溅射屏幕(Splash Screen),也叫程序启动画面的制作(.NET2005) 》和《HOW TO:溅射屏幕(Splash Screen),也叫程序启动画面的制作(.NET2003) 》。
在这里我只是简单说一下该留意的:
一是初始窗体显示的时间默认为两秒,在主窗体初化(New的过程)和加载(Load的过程)两个时段它一直显示,加载结束后初始窗体自动Dispose,主窗体自动受激活;
二是主窗体在设计和加载中不要置WindowState=Maximized,最好设为Normal。若置为Maximized,那么初始窗体显示时主窗体也一样显示出来。当然,你可以在加载代码最后一行来置它。
三,IDE提供的初始窗体少了加载过程消息返馈到初始窗体,所以这里加了一个静态类SplashScreenHelper处理。同时也加一个函数ActiveFormWithMaxnumSize来置主窗体的最大化并激活。
示例代码:
Imports lzmtw.uSystem.uWindows.uForms
Public Class MainForm
Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
uMainForm.SplashScreenHelper.SendMessage("正在初始化界面....")
Dim m As New uMainForm.Menu.MenuManager()
'取主窗体MenuStrip,如没有自动添加一个给它
m.SetMainFormMenuStrip(Me)
'读菜单文件
m.ReadFile("Test.mnu")
'绑定默认的Click事件
m.AddDefaultClickHandler()
'附加About窗体
uMainForm.AboutFormAddtoMainForm.Instance(Me)
'停两秒截屏
Threading.Thread.Sleep(2000)
'模仿连接数据库
uMainForm.SplashScreenHelper.SendMessage("正在连接数据库...")
'如连接耗时五秒
Threading.Thread.Sleep(5000)
'这个使主窗最大,可以不使用
uMainForm.SplashScreenHelper.ActiveFormWithMaxnumSize(Me)
End Sub
Protected Overridable Sub OnNewClick(ByVal sender As System.Object, ByVal e As System.EventArgs) ' New
MsgBox("New")
End Sub
Protected Overridable Sub OnOpenClick(ByVal sender As System.Object, ByVal e As System.EventArgs) ' Open
MsgBox("Open")
End Sub
Protected Overridable Sub OnCloseClick(ByVal sender As System.Object, ByVal e As System.EventArgs) ' Close
MsgBox("Close")
End Sub
Protected Overridable Sub OnConfigClick(ByVal sender As System.Object, ByVal e As System.EventArgs) ' Config
MsgBox("Config")
End Sub
End Class
效果图: