主窗体执行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();
直到这个函数结束才显示出来。
是怎么回事啊。

解决方案 »

  1.   

    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();
    }
      

  2.   

    楼上正解,Application.DoEvents() 这句是强制处理消息队列的消息。所以先重画窗口再执行以下的代码。