【发布时间】:2014-09-26 21:12:29
【问题描述】:
主题说明了一切。我实际上将标签用作伪进度条,因此它具有纯蓝色背景色,没有文本,并且我在每个计时器滴答声上增加其宽度。除了一个奇怪的情况外,这很好用:
如果我整天开着窗户,没关系。
如果我最小化不到一分钟并恢复,就可以了。
只有当我最小化超过一分钟(足够长以至于实际触发滴答声),然后恢复窗口时,标签才不会重新绘制。也就是说,当我恢复窗口时,会显示在刻度期间未动态更新的其他标签,但不会重新绘制动态更新的特殊标签(我希望为蓝色的像素是窗口的背景颜色,a非常浅的灰色)。是的,如果恢复的窗口在那里直到下一个刻度,标签会以预期的方式重新绘制为蓝色。窗口未锁定 - 它响应输入。我使用的是拖到表单上的 Windows.Forms.Timer,而不是代码中的 System.Timers.Timer。
那么,是用户错误还是 OS/.NET 框架错误?
编辑 1: 根据下面的答案 1,尝试读取另一个标签的宽度会触发问题。为什么窗口的最小化状态会影响读取标签的宽度?
【问题讨论】:
-
你能发布一些重现问题的代码吗?
-
作为一种快速解决方法,您可以在最小化时禁用计时器并在最大化时恢复。这有点垃圾,最好尝试解决原因,但我们需要您提供更多信息...
-
你说它工作正常,除非一分钟过去了。问题是,你的代码不能正常工作,你很幸运它在其他场合也能正常工作。您很幸运地发现了一个错误!
-
我无法重现该问题,因此您必须向我们展示导致该问题的代码。告诉我们您也在使用哪种操作系统可能会有所帮助。
-
当我克隆项目并从中剥离所有看似非必要的东西时,剥离的版本并没有出现问题。我将不得不对完整版进行一些选择性评论,看看我是否可以隔离它。
标签: vb.net winforms timer label repaint