日期:2014-05-17  浏览次数:20841 次

【Winform】弹出窗口关闭后,原窗口的刷新,如何设计
大概意思是这样的

public partial class Login : Form
{
  private void buttonLogin_Click(object sender, EventArgs e)
        {
            MessageForm messageForm = new MessageForm();
            if (messageForm.ShowDialog() == DialogResult.OK)
            {
                //do something
            }
   }
}

1.messageForm.ShowDialog()时,覆盖了原来的窗口画面。
2.弹出窗口关闭后,//do something的执行代码略耗一点时间,需要个几秒才能执行完。
3.原来的窗口界面在弹出窗口关闭后呈卡住状态,不能直接刷新

请问这种情况时,界面设计上应该怎么做比较好?
我试过在//do something之前加上Thread.Sleep(1000)线程暂停,似乎不管用,这个线程暂停并不能让UI获得时间来刷新界面。

是不是只能够把//do something的代码另外开个线程去做,弹出窗口关闭后,主线程接着刷新界面,新开的线程去执行//do something代码。

------解决方案--------------------
在需要刷新界面前加一句Application.DoEvents(),给它一点时间