我想在窗体加载时可以停留几秒,然后跳出另一个窗体
   private void KongZhi_Load(object sender, EventArgs e)
        {
            Thread.Sleep(2000);
            this.Hide();
            ZhuKong z1 = new ZhuKong();
            z1.ShowDialog();
        }
这是我的窗体加载程序,但运行后,kongzhi窗体不出现了,过了两秒Zhukong窗体出现了,请问这是为什么,为什么第一个窗体加载后不会出现呢,谢谢各位的回答。

解决方案 »

  1.   

    Thread.Sleep(2000);这不是停两秒吗,然后创建ZhuKong 
      

  2.   

    Thread.Sleep(2000);//暂停了两秒
    this.Hide();//当前窗体隐藏 也就是让kongzhi窗体隐藏起来
    ZhuKong z1 = new ZhuKong();//创建ZhuKong
    z1.ShowDialog();//显示ZhuKong
      

  3.   

    我的意思是想让当前窗体出来 ,显示两秒,然后消失出来另一个窗体,问题是ZhuKong窗体两秒后出来了,但第一个窗体始终没有出来
      

  4.   


    你这段代码是在当前线程(主线程)中 停留2秒 而主线程在跑完load时间后对窗体进行重绘 并展现出来
    所以你运行程序两秒钟后才会出现当前窗体  没有达到你想要的效果
    正确的写法应该是   private void KongZhi_Load(object sender, EventArgs e)
            {
    //起一个线程
          Thread    sub();
    }private void sub(){
             Thread.Sleep(2000);
               this。invke(Action(delegate(object o){ 
                   this.Hide();
                   ZhuKong z1 = new ZhuKong();
    }),new object[]());invke 是必需的 因为其他线程里是不允许使用主线程创建的控件的,即空间是线程安全的 不允许跨线程调用(做特殊处理除外) 这样 支线程跑完两秒后 切回主线程执行隐藏和new操作 (这个地方你只new了ZhuKong  还没有Show())以上方法有些麻烦  但为Winform开发之基础,一定要掌握,
    另外还有简单的办法  就是load的时候 new一个Timer 定时 2秒钟后执行一个方法补充一下 尽量不要将以后永远不出现的窗体hide掉,有时候程序异常的时候,隐藏的窗体会掉出来,建议启动主窗体(可以先隐藏),从抓窗体中弹出登陆框等,登陆后登陆框可以直接释放掉
    就说这些 有问题可以联系我 QQ:67780558
    }