c# windows form

本文关键字:form windows | 更新日期: 2023-09-27 17:50:09

我有一个返回一些字符串消息的处理程序。如何将它们放入表单应用程序中?我的意思是,我希望每次处理程序被激活时,在windows窗体中打印结果。我现在需要使用线程。我不知道如何以编程方式创建和添加更改的名称,窗体在处理消息时弹出。有人能告诉我怎么做吗?

c# windows form

我假设你在后台有一些工作要做,每当有一些进展时,你想要更新表单…

然后我将使用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!";
    }
}