c# windows form
本文关键字:form windows | 更新日期: 2023-09-27 17:50:09
我有一个返回一些字符串消息的处理程序。如何将它们放入表单应用程序中?我的意思是,我希望每次处理程序被激活时,在windows窗体中打印结果。我现在需要使用线程。我不知道如何以编程方式创建和添加更改的名称,窗体在处理消息时弹出。有人能告诉我怎么做吗?
我假设你在后台有一些工作要做,每当有一些进展时,你想要更新表单…
然后我将使用backgroundworker:
BackgroundWorker bw = new BackgroundWorker();
public Form1()
{
InitializeComponent();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
for (int i = 1; (i <= 10); i++)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
// Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500);
worker.ReportProgress((i * 10)); //Activating the progressChanged event
}
}
}
当你执行worker.ReportProgress()
时,下面的事件将在UI线程上触发,它会给你想要的动态更新
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.tbProgress.Text = (e.ProgressPercentage.ToString() + "%");
}
当工人完成执行RunWorkerCompleted事件将触发
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if ((e.Cancelled == true))
{
this.tbProgress.Text = "Canceled!";
}
else if (!(e.Error == null))
{
this.tbProgress.Text = ("Error: " + e.Error.Message);
}
else
{
this.tbProgress.Text = "Done!";
}
}
源