如何更快地更新Label的BackColor?

时间:2011-02-22 08:46:51

标签: c# .net winforms label backcolor

编辑:

我已经设法解决了这个问题。现在在MouseEnter上,我将焦点设置为按钮,然后将MouseOverBackColor更改为按钮的当前BackColor;我还有GotFocus的事件处理程序(在按钮的父容器中),它会相应地更改BackColor。我不知道为什么这样工作,但我只是让它在这个特定的组合中工作。同样,我正在寻找更好的方法来做到这一点,以便继续解决问题。

我做了一个Button覆盖,Text属性现在覆盖了一个自定义子Label。问题是我将样式应用于按钮(焦点/鼠标输入时颜色变化)。

我希望Label能够相应地改变它的颜色,到目前为止我已经用两种方式实现了这个目标:

  1. 将标签的BackColor设置为Transparent
  2. 覆盖OnMouseEnterOnMouseLeave以相应更改标签BackColor
  3. 他们都工作;唯一的问题是更改标签的BackColor时会有轻微的延迟;当Button BackColor发生变化时,这会导致图形撕裂。 这不是什么大问题,但有点烦人;非常感谢你给我的任何有用的建议。

1 个答案:

答案 0 :(得分:2)

取决于您的应用程序处理Windows消息泵的频率或空闲程度,您可能需要调用Control.Update()来强制.NET立即更新控件的绘制。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.update.aspx