首页 新闻 会员 周边 捐助

c# 登陆时先显示加载窗体然后显示主界面的问题

0
悬赏园豆:10 [已解决问题] 解决于 2013-11-15 09:20

我写了一个加载窗体,可是当登陆按钮点击之后,加载窗体,必须等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);
        }
Aiolos丶M的主页 Aiolos丶M | 菜鸟二级 | 园豆:353
提问于:2013-11-13 15:04
< >
分享
最佳答案
0

加载窗体不要在初始化和load里面处理耗时的功能,用异步处理这些

收获园豆:4
幕三少 | 小虾三级 |园豆:1384 | 2013-11-15 09:17

恩,我就用的是异步,方法我找到了谢谢

Aiolos丶M | 园豆:353 (菜鸟二级) | 2013-11-15 09:19
其他回答(3)
0

既然有登陆窗体就简单,你就有足够的时间在后台把要显示的窗体的信息加载出来,在点登录后,直接show出来就行了。

收获园豆:4
空明流光 | 园豆:111 (初学一级) | 2013-11-13 15:11

最主要的是你的窗体初始化加载要提前完成才能快速显示出来,比如Load方法中什么都不写,而用一个timer延迟加载,这样显示会快很多

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2013-11-13 15:13

我写的登陆窗体跳转到主窗口用的不是Show

 if (formLogin.DialogResult == DialogResult.OK)
                    {
                        //Application.Run(new WindowMenu(fromLogin.name, fromLogin.password));
                        WindowCollection.Splash.LoadAndRun(new WindowMenu(formLogin.name, formLogin.password));                       
                    }

 

支持(0) 反对(0) Aiolos丶M | 园豆:353 (菜鸟二级) | 2013-11-13 15:20

@莫问: 不管窗体是怎么加载,你把窗体在Load以及之前事件中的代码都推迟在Form显示出来之后,或者在点击登录按钮之前执行完成都可以。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2013-11-13 15:35

@沧海一杰: 找到方法了谢谢

支持(0) 反对(0) Aiolos丶M | 园豆:353 (菜鸟二级) | 2013-11-15 09:20
0

跟登录窗体一起加载,并hide,跳转时再show

收获园豆:1
iEvent | 园豆:529 (小虾三级) | 2013-11-13 17:15

找到方法了谢谢

支持(0) 反对(0) Aiolos丶M | 园豆:353 (菜鸟二级) | 2013-11-15 09:19
0
if(login(帐号,密码))
{
    this.hide();
    主窗体 from1 实例化
    from1.show();
}
收获园豆:1
LanJerry | 园豆:168 (初学一级) | 2013-11-14 09:16

谢谢提供方法

支持(0) 反对(0) Aiolos丶M | 园豆:353 (菜鸟二级) | 2013-11-15 09:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册