我想在窗体加载时可以停留几秒,然后跳出另一个窗体
private void KongZhi_Load(object sender, EventArgs e)
{
Thread.Sleep(2000);
this.Hide();
ZhuKong z1 = new ZhuKong();
z1.ShowDialog();
}
这是我的窗体加载程序,但运行后,kongzhi窗体不出现了,过了两秒Zhukong窗体出现了,请问这是为什么,为什么第一个窗体加载后不会出现呢,谢谢各位的回答。
private void KongZhi_Load(object sender, EventArgs e)
{
Thread.Sleep(2000);
this.Hide();
ZhuKong z1 = new ZhuKong();
z1.ShowDialog();
}
这是我的窗体加载程序,但运行后,kongzhi窗体不出现了,过了两秒Zhukong窗体出现了,请问这是为什么,为什么第一个窗体加载后不会出现呢,谢谢各位的回答。
解决方案 »
- socket 客户端如何在发送数据之前判断是否连接
- 使用VS2010(C#)做了一个小工具,其中使用到WCF,如何可以避免使用.net v4.0?
- 还是水晶报表的问题?
- C# 实现移动工具条,表情选择框,跳出窗体的窗体
- 怎样知道.net类库的某个类是否可串行化
- 关于ListView的问题
- 下面是我的问题,请帮我看一下。
- 如何正确使用"更新"存储过程
- 难题求解:rating是1~3的整数,老板要求rating的数对应一组图片,例如:rating当前是2, 就要求显示两个相同的图片, 不知如何下手?高手帮
- 阿土你进来,你的方法有问题!!!!!如果ASCII小于0,他会取绝对值,而不是真实值
- 弱弱的问个关于WPF的问题
- C#下查询数据库表内某一字段是否存在
this.Hide();//当前窗体隐藏 也就是让kongzhi窗体隐藏起来
ZhuKong z1 = new ZhuKong();//创建ZhuKong
z1.ShowDialog();//显示ZhuKong
你这段代码是在当前线程(主线程)中 停留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
}