繁体   English   中英

C#Windows窗体

[英]c# windows form

我有一个返回一些字符串消息的处理程序。 如何将它们放入表单应用程序? 我的意思是我希望每次激活处理程序以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!";
    }
}

资源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM