将显示C#WinForms标签,但不显示文本

时间:2012-10-25 21:01:38

标签: c# winforms user-interface label

我正在设计一个GUI,我有一个标签,在我调用一个往往需要一段时间的动作后,我有效地使用它作为“请稍候”的消息。标签的文本是静态的,我已经在VS2010的属性中为标签控件设置了它。

当我在表单上点击该操作时,我。显示()通常隐藏的控件,直到耗时的过程完成,然后.Hide()它。当它击中.Show()时,标签弹出(我知道这是因为我将BorderStyle设置为Fixed3D所以我看到标签的边框显示)但是它没有任何文本。我已经尝试将标签设置为自动调整并且无效,我的文本在灰色上设置为黑色,因此没有隐形墨水,一切都可见,字体已设置。代码按照我希望的方式执行,标签中没有文本。我很茫然。

有什么想法吗?

3 个答案:

答案 0 :(得分:10)

如果在同一个线程上发生耗时的过程,则可能是刷新/重绘问题(处理器太忙而无法处理UI请求)。尝试在开始长时间运行的过程之前刷新窗口,或者更恰当地说,将耗时的过程放在BackgroundWorker中。

答案 1 :(得分:6)

如果在后台线程中没有执行耗时的进程,那么您的UI不会更新,因为没有进行任何消息处理。控件在WM_Paint消息中重绘自己。

在进入漫长过程之前,尝试在更改其状态后在控件或其窗口句柄父(窗体)上调用Refresh。

或者,将长时间运行的进程移动到后台线程(请参阅.NET 4.0任务)以释放UI线程。

答案 2 :(得分:3)

也许我错过了什么,但你为什么不设置label.Visible