读书人

WinForm button事件中的处置

发布时间: 2013-04-20 19:43:01 作者: rapoo

WinForm button事件中的处理


private void Open_Click(object sender, EventArgs e)
{
if (openDlg.ShowDialog() == DialogResult.OK)
{
loadpic.Visible = true;
//...........一个长时间的处理
loadpic.Visible = false;
}
}

上面的代码是不行的,其实就是在长时间处理时,显示一个loading等待图片。
可能要异步方法,正在查资料
求援助
[解决办法]
同问中、、、、、
[解决办法]
loadpic.Visible = true;
Application.DoEvent();
//...........一个长时间的处理
loadpic.Visible = false;
[解决办法]
//...........一个长时间的处理

可以移出来做成一个方法。

处方法可以用异步执行,或线程来执行。

这样UI就不会受到影响了。
[解决办法]

private bool hasFinished = false;
if (openDlg.ShowDialog() == DialogResult.OK)
{
Thread t = new Thread(()=>{//...........一个长时间的处理; hasFinished = true;});

while (! hasFinished)
{
loadpic.Visible = true;
}
loadpic.Visible = false;
}

读书人网 >C#

热点推荐