如何更改只读TextBox的文本颜色?

Ame*_*men 14 c#

我正在用c#编写一本字典,我正在使用一个文本框来显示定义.显然,我需要将ReadOnly属性设置为true,但是当我这样做时,我无法更改文本的颜色.但是更改字体可以正常工作.我该怎么办?

我正在使用此代码,并且当ReadOnly属性为false时设置颜色完全正常,但是当它为真时不会更改:

    private void button5_Click(object sender, EventArgs e)
    {
        FontDialog fd = new FontDialog();
        fd.ShowColor = true;
        if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            textBox3.Font = fd.Font;
            textBox3.ForeColor = fd.Color;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Lar*_*ech 44

由于某种原因,只读TextBox的ForeColor属性与BackColor属性结合.因此,如果您"搔痒"BackColor属性,它将在此之后设置ForeColor属性:

FontDialog fd = new FontDialog();
fd.ShowColor = true;
if (fd.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
  textBox3.Font = fd.Font;
  textBox3.BackColor = textBox3.BackColor;
  textBox3.ForeColor = fd.Color;
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 5

假设 ForeColor 已经设置为所需的颜色(可能在设计器中),所有需要做的是:

tb.BackColor = tb.BackColor;
Run Code Online (Sandbox Code Playgroud)

这将神奇地触发并修复前景色。尽管可能还需要解释为什么添加这行代码的注释。