在页面初始化时或查询数据时会比较慢,有没有办法加个等待页面上去? 如题。 我做的时wince开发,但是平常的winform解决办法也可以。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.可以做一个等待的窗口,将窗口的ControlBox属性设为False,窗体中加个等待的GIF图片2.之后可利用BackgroundWorker控件或者Thread来做等待效果//BackgroundWorker控件,等待效果private void DoSearch(object sender, EventArgs e){ BackgroundWorker worker = GetWorker(); worker.RunWorkerAsync(); //Your Search function worker.CancelAsync();}private BackgroundWorker GetWorker(){ BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandler(worker_DoWork); worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted); worker.WorkerSupportsCancellation = true; return worker;}private void worker_DoWork(object sender, DoWorkEventArgs e){ MessageForm mf = new MessageForm(); mf.Show(); BackgroundWorker worker = (BackgroundWorker)sender; while (true) { mf.BringToFront(); mf.Refresh(); if (worker.CancellationPending) { mf.Close(); e.Cancel = true; } else { e.Cancel = false; } System.Threading.Thread.Sleep(10); }}private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e){ if (e.Cancelled) ((BackgroundWorker)sender).Dispose();} ThreadPool.QueueUserWorkItem(delegate{异步执行的方法},要传入线程的参数);异步执行的方法(object obj){ 经过访问是数据库等操作以后,如果要更新UI界面 就使用this.invoke(delegate{操作UI控件的方法}) }操作UI控件的方法(){ 操作UI} 比例查询 文档的转换 查询orcl数据库并导出成word或excel有格式要求 像素和厘米之间是如何转换的? (高分!)ftp作业如何处理超时? webservice放在本地可以执行,如过放在网络上,我该怎么调用webservice 两个小问题,谢谢! 大虾救命 datagrid 请教专家:System.Windows.Forms.KeyEventArgs 能应用在WebForm中吗? dgv行颜色显示 DataTable数据更新到数据库问题 跪求例子,关于winform导出word,Excel功能.
2.之后可利用BackgroundWorker控件或者Thread来做等待效果//BackgroundWorker控件,等待效果
private void DoSearch(object sender, EventArgs e)
{
BackgroundWorker worker = GetWorker();
worker.RunWorkerAsync();
//Your Search function
worker.CancelAsync();
}
private BackgroundWorker GetWorker()
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.WorkerSupportsCancellation = true;
return worker;
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
MessageForm mf = new MessageForm();
mf.Show();
BackgroundWorker worker = (BackgroundWorker)sender;
while (true)
{
mf.BringToFront();
mf.Refresh();
if (worker.CancellationPending)
{
mf.Close();
e.Cancel = true;
}
else
{
e.Cancel = false;
}
System.Threading.Thread.Sleep(10);
}
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
((BackgroundWorker)sender).Dispose();
}
ThreadPool.QueueUserWorkItem(delegate{异步执行的方法},要传入线程的参数);异步执行的方法(object obj)
{
经过访问是数据库等操作以后,如果要更新UI界面
就使用this.invoke(delegate{操作UI控件的方法})
}操作UI控件的方法()
{
操作UI
}