日期:2014-05-19  浏览次数:20840 次

winform开发的疑问
我一个winform窗体,一开始加载时就必须执行一段webservice的数据更新,我把这段代码放在load事件里,可是窗体要等到数据更新完再显示,这样就让用户等很久了,我想先让窗体显示一个progressBar,后台在执行更新,更新完再用datagridview显示,可是有想法却不知如何下手,高手多指教!

------解决方案--------------------
用多线程!另起一个线程去更新数据!
------解决方案--------------------
用多线程的话你在更新数据的时候可能其他控件都加载显示出来了,我觉得不如在构造时显示一个专门的进度条窗口,在读取的过程中改变这个进度条的状态,记得Application.DoEvent()
构造完了关掉进度条窗口
------解决方案--------------------
A窗体
一开始加载时就必须执行一段webservice的数据更新
先Hide
等待progressBar走完再show出来


B窗体
窗体显示一个progressBar


数据更新完后datagridview怎么显示应该好处理吧?
------解决方案--------------------
最好用另外一个窗体才执行更新
------解决方案--------------------
可以借用Timer控件,先让窗体显示出来,随出再显示数据,这样更友好.

private void PrdForm_Load(object sender, EventArgs e)
{
// 设置鼠标为沙漏状
this.Cursor = Cursors.WaitCursor;

// 读取数据
timer.Start(); // timer的Interval设为3,界面得用这段时间就可以显示出来了.

// 还原鼠标指针状
this.Cursor = Cursors.Default;
}

private void timer_Tick(object sender, EventArgs e)
{
更新数据方法();

// 界面显示完成后,更新数据成功后,就停止.
timer.Stop();
}
------解决方案--------------------
用多线程,在窗口的load事件中加载控件,加载完后启动数据更新的线程和进度条的显示
------解决方案--------------------
如果无法知道进度条时间,就用一个等待界面表示正在更新数据。在load事件中启动更新数据的线程,先显示等待界面,数据更新完后关闭等待界面,同时把当前的界面显示出来
------解决方案--------------------
必须用多先程的