【问题标题】:How can I make the BackColor of a Label update faster?如何使标签的背景颜色更新更快?
【发布时间】:2011-02-22 08:46:50
【问题描述】:

编辑:

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

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

我希望标签相应地改变它的颜色,到目前为止我已经通过两种方式实现了这一点:

  1. 将标签的BackColor 设置为Transparent
  2. 覆盖 OnMouseEnterOnMouseLeave 以相应地更改标签的 BackColor

它们都有效;唯一的问题是更改标签的BackColor 时会有一点延迟;当按钮的BackColor 发生变化时,这会导致图形有点撕裂。 这没什么大不了的,但有点烦人;如果您能给我任何有用的建议,将不胜感激。

【问题讨论】:

  • 你为什么不把标签的BackColor设置为透明永久
  • @Daniel:我怀疑这会有助于提高性能。这个问题似乎并不表明他正在将标签的BackColor 更改为介于两者之间的任何else
  • 你是对的,问题没有说明。但这是唯一的方法,我可以解释两种情况下的延迟......
  • 从您的问题看来,您正在 Button 控件之上显示Label 控件。如果是这样,你到底为什么要这样做?您只需更改ButtonBackColor 属性即可达到相同的效果。
  • 问题是我还有MouseEnterBackColorMouseDownBackColor(独立于BackColor),需要动态设置继承父母的Backcolor,也可以更改(是否集中)以及当这种情况发生时(MouseOver,然后将MouseEnterBackColor 更改为父级的BackColor,即标签的BackColor 出现断断续续的情况)

标签: c# .net winforms label backcolor


【解决方案1】:

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

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

【讨论】:

  • 自从我发布了这个问题,我确实学到了很多东西,尤其是关于这个特定问题。回过头来看这个问题,它现在并没有以前那么有意义:) 即便如此,你是对的;如果我对消息泵的流速不满意,请执行我需要的操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多