用C#做WINDOWS编程,多窗体时窗体刷新问题
主窗体执行SQL数据库搜索的时候,我想生成一个子窗体档一下,上书,“正在操作数据库”。
但是子窗体SHOW的时候发现里面的PictureBox与Label都没有刷出来。
直到数据库操作结束后才刷出来。
这是我的部分代码,大家看看问题在哪啊?
以下是主窗体的事情处理函数。
private void btnLogin_Click(object sender, System.EventArgs e)
{
FloatWindow fwLoginWaiting = new FloatWindow("正在登录服务器验证用户名与密码.....\n请稍候",2,"241.jpg",0,0);
fwLoginWaiting.Show();
....这里是耗时的数据库操作。
<----------------------------------------断点就是设到到这里,子窗体还都没有把PictureBox与Label刷出来。。
fwLoginWaiting.Close();
}
如果没有后面的
fwLoginWaiting.Close();
直到这个函数结束才显示出来。
是怎么回事啊。。。。
问题点数:15、回复次数:3Top
1 楼hbxtlhx(平民百姓-自已动手,丰衣足食)回复于 2005-11-08 14:23:42 得分 15
private void btnLogin_Click(object sender, System.EventArgs e)
{
FloatWindow fwLoginWaiting = new FloatWindow("正在登录服务器验证用户名与密码.....\n请稍候",2,"241.jpg",0,0);
fwLoginWaiting.Show();
Application.DoEvents();//这里加这一句话试试。
....这里是耗时的数据库操作。
<----------------------------------------断点就是设到到这里,子窗体还都没有把PictureBox与Label刷出来。。
fwLoginWaiting.Close();
}Top
2 楼hbxtlhx(平民百姓-自已动手,丰衣足食)回复于 2005-11-08 14:24:33 得分 0
或者用代理异步执行也可以。Top
3 楼SqlDataAdapter(咸蛋超人)回复于 2005-11-08 14:43:55 得分 0
楼上正解,Application.DoEvents() 这句是强制处理消息队列的消息。所以先重画窗口再执行以下的代码。Top




