在执行期间使用进度消息更新Windows窗体面板

时间:2011-08-08 21:21:03

标签: windows winforms

我试图在表单中的面板中显示我的Windows窗体应用程序的进度。但是,所有消息在应用程序完成执行结束时一起显示。有没有办法将消息显示为代码 - 通过这些消息执行“进展” - 就像在解释语言中那样?

PS:我将消息作为标签控件添加到代码中不同位置的面板上。

谢谢。

2 个答案:

答案 0 :(得分:2)

每次更改消息时都必须使标签无效:

label1.Text = "Initializing...";
label1.Refresh();

// Do Stuff

label1.Text = "Working...";
label1.Refresh();

// Do Stuff

label1.Text = "Completed.";
label1.Refresh();

答案 1 :(得分:0)

或者,使用backgroundWorker(或其他线程)可能值得。现在发生的事情是主线程(也是绘制UI的主线程)忙于处理更新UI的过程。

我不确定你使用的语言是什么,但是我假设是C#。在这种情况下,请创建一个报告进度的BackgroundWorker。异步调用后台工作程序,以便它进行处理并使用Reports_Progress事件来设置标签。由于标签是由另一个线程创建的,因此您无法在主Backgroundworker do_work过程中设置标签。看到这个例子,它可能有所帮助(诚然,他设置了一个进度条值,但你可以轻松设置标签文本 - http://www.dotnetperls.com/progressbar

如果你没有Backgroundworker类,你可以使用不同的线程实现相同的逻辑。

如果您需要更多信息,请与我们联系。