【发布时间】:2015-02-15 07:33:43
【问题描述】:
我有一个需要几秒钟才能完成的方法。我想让一个标签在那段时间可见,所以我使用了这段代码:
label.Visible = true;
method();
label.Visible = false;
当我运行此代码时,标签的形状会出现,但文本和颜色不会。如果我删除第三行代码,我可以看到标签只有在方法完成后才完全可见。如何在方法开始之前使标签完全可见?
【问题讨论】:
标签: c#
我有一个需要几秒钟才能完成的方法。我想让一个标签在那段时间可见,所以我使用了这段代码:
label.Visible = true;
method();
label.Visible = false;
当我运行此代码时,标签的形状会出现,但文本和颜色不会。如果我删除第三行代码,我可以看到标签只有在方法完成后才完全可见。如何在方法开始之前使标签完全可见?
【问题讨论】:
标签: c#
您可以调用label.Refresh() 同步使标签失效并重绘。这是documentation。将Refresh 放在设置Visible 到true 和调用method 之间。
顺便说一句,如果method 是一个长时间运行的操作(看起来确实如此),您可能需要考虑在BackgroundWorker 上运行它,以便GUI 在操作期间保持响应。但这意味着在您的应用程序中引入线程,这是相对复杂的,您可能会满足于简单地重新绘制标签并让 GUI 冻结直到 method 完成。
【讨论】: