编辑:
我已经设法解决了这个问题。现在在MouseEnter
上,我将焦点设置为按钮,然后将MouseOverBackColor
更改为按钮的当前BackColor
;我还有GotFocus
的事件处理程序(在按钮的父容器中),它会相应地更改BackColor
。我不知道为什么这样工作,但我只是让它在这个特定的组合中工作。同样,我正在寻找更好的方法来做到这一点,以便继续解决问题。
我做了一个Button覆盖,Text属性现在覆盖了一个自定义子Label。问题是我将样式应用于按钮(焦点/鼠标输入时颜色变化)。
我希望Label能够相应地改变它的颜色,到目前为止我已经用两种方式实现了这个目标:
BackColor
设置为Transparent
OnMouseEnter
和OnMouseLeave
以相应更改标签BackColor
。他们都工作;唯一的问题是更改标签的BackColor
时会有轻微的延迟;当Button BackColor
发生变化时,这会导致图形撕裂。
这不是什么大问题,但有点烦人;非常感谢你给我的任何有用的建议。
答案 0 :(得分:2)
取决于您的应用程序处理Windows消息泵的频率或空闲程度,您可能需要调用Control.Update()来强制.NET立即更新控件的绘制。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.update.aspx