当控件被禁用时如何更改文本的颜色。我想在 c# winforms 中禁用控件时设置不同的颜色。
编辑:我在评论中犯了与科迪相同的错误,因此更正了我的答案。
这取决于它是哪个控件。
例如,如果它是
TextBox
,也许您可以将其设置为 ReadOnly
而不是禁用。对于其他一些控件,您也许可以执行类似的操作,使它们显示为禁用状态,但实际上并未被禁用。
但是,如果您想正确执行此操作,您需要让它们成为所有者绘制或重写 OnPaint 事件并自己绘制文本。
您可以手动执行此操作 - 当您禁用该控件时,也只需更改文本颜色即可?
如果你有很多控件,你可以这样做:
这样,您将拥有一段适用于您所有表单的代码,并将逐渐扩展以使用您需要的所有控件。
如果这是您想要的方式,我将提供一些代码...
我遵循 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”);”我的前景色总是灰色的正确显示... 注意:该按钮处于禁用状态。当按钮启用时改变颜色没有问题。
你有什么建议吗?