我写了一个加载窗体,可是当登陆按钮点击之后,加载窗体,必须等3-4S才显示出来,怎么样能点击按钮之后马上显示加载窗体,或者给一个DEMO或思路?
public void CloseMe(object o, EventArgs e) { this.Close(); } public static void LoadAndRun(Form form) { form.HandleCreated += delegate { new Thread(new ThreadStart(delegate { Splash splash = new Splash(); form.Shown += delegate { splash.Invoke(new EventHandler(splash.CloseMe)); splash.Dispose(); }; Application.Run(splash); } )).Start(); }; Application.Run(form); }
加载窗体不要在初始化和load里面处理耗时的功能,用异步处理这些
恩,我就用的是异步,方法我找到了谢谢
既然有登陆窗体就简单,你就有足够的时间在后台把要显示的窗体的信息加载出来,在点登录后,直接show出来就行了。
最主要的是你的窗体初始化加载要提前完成才能快速显示出来,比如Load方法中什么都不写,而用一个timer延迟加载,这样显示会快很多
我写的登陆窗体跳转到主窗口用的不是Show
if (formLogin.DialogResult == DialogResult.OK) { //Application.Run(new WindowMenu(fromLogin.name, fromLogin.password)); WindowCollection.Splash.LoadAndRun(new WindowMenu(formLogin.name, formLogin.password)); }
@莫问: 不管窗体是怎么加载,你把窗体在Load以及之前事件中的代码都推迟在Form显示出来之后,或者在点击登录按钮之前执行完成都可以。
@沧海一杰: 找到方法了谢谢
跟登录窗体一起加载,并hide,跳转时再show
找到方法了谢谢
if(login(帐号,密码)) { this.hide(); 主窗体 from1 实例化 from1.show(); }
谢谢提供方法