更改禁用控件的文本颜色

问题描述 投票:0回答:4

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

c# .net winforms controls
4个回答
3
投票

编辑:我在评论中犯了与科迪相同的错误,因此更正了我的答案。

这取决于它是哪个控件。

例如,如果它是

TextBox
,也许您可以将其设置为
ReadOnly
而不是禁用。对于其他一些控件,您也许可以执行类似的操作,使它们显示为禁用状态,但实际上并未被禁用。

但是,如果您想正确执行此操作,您需要让它们成为所有者绘制或重写 OnPaint 事件并自己绘制文本。


1
投票

您可以手动执行此操作 - 当您禁用该控件时,也只需更改文本颜色即可?


0
投票

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

  • 附上您的表单 OnChildAdded 事件
  • 事件中,使用 if ... is of type 结构来确定控件类型
  • 根据控件类型,注册适当的 OnEnabledChange 事件
  • 如果发生,请适当更改文本颜色

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

如果这是您想要的方式,我将提供一些代码...


0
投票

我遵循 Hans Olsson 的回答:“但是,如果你想正确地做到这一点,你需要让它们拥有所有者绘制或重写 OnPaint 事件并自己绘制文本。” 所以我写了这个函数:

        private void button_resetRelay3_Paint(object sender, PaintEventArgs e)
    {
        Debug.WriteLine("button_resetRelay3_Paint");
        if (true == comboBox_F3OnOffParam.Text.ToUpper().Equals("ON"))
        {
            button_setRelay3.ForeColor = Color.White;
            Debug.WriteLine("Color.White");
        }
        else
        {
            button_setRelay3.ForeColor = System.Drawing.SystemColors.ControlText;
            Debug.WriteLine("Color.ControlText");
        }
    }

尽管“Debug.WriteLine(“Color.White”);”我的前景色总是灰色的正确显示... 注意:该按钮处于禁用状态。当按钮启用时改变颜色没有问题。

你有什么建议吗?

© www.soinside.com 2019 - 2024. All rights reserved.