2

所以我在另一堂课上做了一个漫长的进步,我想给我的 GUI 一些进步信息。我知道后台工作人员,如果需要的话可以使用它,但是这个操作非常简单,我觉得后台工作人员比我需要的多一点。相反,我使用事件处理程序来处理更新,但操作不一致。

当工人阶级达到一个点时,它会提出一个事件来讲述它的进展。在 GUI 类中,我有一个监听该事件的事件处理程序。当它找到它时,它会创建一个关于它的字符串,并将该字符串作为标签的文本。

然后我在该事件处理程序中调用 labelname.Update(),但没有任何反应。这是真正令人困惑的部分,我在那里放了一个文本框,设置它的文本,然后调用 textboxname.Update(),它就起作用了。为什么 .Update() 不适用于一个控件,而不适用于另一个控件。有什么技巧可以让它为标签工作吗?

4

2 回答 2

2

我正在将 Roken 的评论变成答案,但他的评论就是答案。您必须在后台工作人员期间实现后台操作。

请参阅这篇关于原因和方式的优秀文章。

于 2012-06-13T21:53:30.177 回答
1

(1) 打电话labelname.Invalidate();前先试一下labelname.Update();

调用 Invalidate 方法不会强制同步绘制;要强制同步绘制,请在调用 Invalidate 方法后调用 Update 方法。( MSDN )

(2) 另一种选择是调用labelname.Refresh();

强制控件使其客户区无效并立即 重绘自身和任何子控件。( MSDN )

于 2012-06-13T21:50:52.983 回答