日期:2014-05-18  浏览次数:21007 次

C# winform 实现弹出的等待对话框
C#想实现下面的功能: 
在处理一个较复杂的操作的时候出现弹出的等待对话框,当处理完成后该对话框自动关闭。 
要想实现该如何处理?

------解决方案--------------------
用一个线程
1、用线程来处理复杂操作;
2、前台程序程序的对话框负责显示等待信息,
3、使用委托来处理关闭,纯种结束时通过委托关闭对话框。
------解决方案--------------------
System.ComponentModel.BackgroundWorker()
很适合实现你的功能。MSDN看看吧,很详细
------解决方案--------------------

在Form1窗体中(主窗体)
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.ShowDialog(this);
}



在Form2窗体中(弹出窗体)
using System.Threading;

//线程对象
Thread tWork ;

//退出标志
bool bExit = false;

//当页面加载时开始线程
private void Form2_Load(object sender, EventArgs e)
{
tWork = new Thread(new ThreadStart(Work));
tWork.Start();
}
//
void Work()
{
int i = 0;
while (!bExit)
{
i++;
Thread.Sleep(1);
if (i > 100) break;

}
this.BeginInvoke(new EventHandler(WorkOver), new object[] { null,null});
}
//点击取消退出
private void button1_Click(object sender, EventArgs e)
{
bExit = true;
if (tWork.Join(1000) == false)
{
tWork.Abort();
}
Close();
}
//当工作结束
private void WorkOver(object sender, EventArgs e)
{
Close();

}