0

我正在寻找一种有效、快速的方式来快速显示多个标签。除了一个接一个地替换标签的所有 .text 属性之外,还有什么好方法呢?我的理解是,每当您更新 .text 属性时,都必须重新绘制 UI,如果您有 50 多个要更新的控件,这将增加延迟。

我知道线程是一种选择,但是当我尝试这个时,我没有看到太大的区别,因为我无法一次加载 2 个标签,我仍然必须等待 UI 线程才能更新标签。还有什么其他方法可以快速有效地加载 50 多个标签?现在的方式需要相当长的时间(3-4s),我觉得这可以降低。信息是从后端系统获取的,所以我没有数据集/等的选项。

4

1 回答 1

2

您必须分离从数据库中检索数据的代码(您使用后台线程执行此操作)和更新 UI 的代码(这应该尽快发生,因为您不想长时间阻塞 UI )。

我的建议是使用该BackgroundWorker组件来检索所有 50 个标签的数据。当 BackgroundWorker 引发RunWorkerCompleted您调用表单SuspendLayout函数的事件时,更新标签的所有值,然后调用ResumeLayout. SuspendLayout 会阻止控件重绘,直到您调用 ResumeLayout。

更多信息:BackgroundWorkerSuspendLayoutResumeLayout

于 2013-10-08T21:47:18.520 回答