【问题标题】:Change TextColor of disabled control更改禁用控件的 TextColor
【发布时间】:2010-12-07 08:30:42
【问题描述】:

当控件被禁用时如何更改文本的颜色。我想在 c# winforms 中禁用控件时设置不同的颜色。

【问题讨论】:

  • 哪种类型的控件?不同控件的行为方式不同,您需要以不同方式处理这些情况。

标签: c# .net winforms controls


【解决方案1】:

编辑:我在 cmets 中犯了与 Cody 相同的错误,因此更正了我的答案。

这取决于它是哪个控件。

例如,如果它是 TextBox,也许您可​​以将其设为 ReadOnly 而不是禁用。对于其他一些控件,您也许可以执行类似的操作,使它们看起来已禁用,但实际上并未被禁用。

但是,如果您想正确地执行此操作,则需要将它们设为 Owner-draw 或覆盖 OnPaint 事件并自己绘制文本。

【讨论】:

  • +1 用于建议所有者绘制。这是解决此问题的正确方法,并且可以保证几乎适用于所有常用控件。
  • Label、TextBox 和 Button 都不支持自绘。
  • 是的,我的错。在我的脑海中,我将所有者绘制支持等同于覆盖控件的Paint 事件。我显然意识到这并不完全相同,但它是您至少需要处理标签、文本框和按钮的方式。 ControlPaint 类可以让这不那么痛苦。
【解决方案2】:

您可以手动进行 - 当您禁用控件时,也只需更改文本颜色?

【讨论】:

  • 如果有问题的控件是TextBox,这将不起作用。你只能在它被禁用时更改它的BackColor,而不是它的ForeColor(即文本颜色)。
【解决方案3】:

如果你有很多控件,你可以这样做:

  • 附加您的表单 OnChildAdded 事件
  • 在事件中,使用 if ... is of type 结构来确定控件类型
  • 根据控件类型,注册适当的 OnEnabledChange 事件
  • 在这种情况下,适当更改文本颜色

这样,您将拥有一段适用于所有表单的代码,并将逐渐扩展以使用您需要的所有控件。

如果你想这样做,我会提供一些代码......

【讨论】:

    猜你喜欢
    • 2011-07-30
    • 2011-05-01
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多