【发布时间】:2011-02-22 08:46:50
【问题描述】:
编辑:
我已经设法解决了。现在在MouseEnter 上,我将焦点设置在按钮上,并将MouseOverBackColor 更改为按钮当前的BackColor;我还有一个GotFocus 的事件处理程序(在按钮的父容器中),它会相应地更改BackColor。我不知道为什么会这样工作,但我只是让它在这个特定的组合中工作。同样,我正在寻找更好的方法来做到这一点,所以请跟上答案。
我做了一个 Button 覆盖,Text 属性现在覆盖了一个自定义子标签。问题是我将样式应用于按钮(焦点/鼠标输入时颜色变化)。
我希望标签相应地改变它的颜色,到目前为止我已经通过两种方式实现了这一点:
- 将标签的
BackColor设置为Transparent - 覆盖
OnMouseEnter和OnMouseLeave以相应地更改标签的BackColor。
它们都有效;唯一的问题是更改标签的BackColor 时会有一点延迟;当按钮的BackColor 发生变化时,这会导致图形有点撕裂。
这没什么大不了的,但有点烦人;如果您能给我任何有用的建议,将不胜感激。
【问题讨论】:
-
你为什么不把标签的BackColor设置为透明永久?
-
@Daniel:我怀疑这会有助于提高性能。这个问题似乎并不表明他正在将标签的
BackColor更改为介于两者之间的任何else。 -
你是对的,问题没有说明。但这是唯一的方法,我可以解释两种情况下的延迟......
-
从您的问题看来,您正在在
Button控件之上显示Label控件。如果是这样,你到底为什么要这样做?您只需更改Button的BackColor属性即可达到相同的效果。 -
问题是我还有
MouseEnterBackColor和MouseDownBackColor(独立于BackColor),需要动态设置继承父母的Backcolor,也可以更改(是否集中)以及当这种情况发生时(MouseOver,然后将MouseEnterBackColor更改为父级的BackColor,即标签的BackColor出现断断续续的情况)
标签: c# .net winforms label backcolor