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

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