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

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

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

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; } } 

由于某种原因,只读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; } 

感谢LarsTech建议我必须设置背面颜色,然后再次设置它

这是对我有用的方法:

  tb.BackColor = Color.Black tb.ForeColor = Color.Black tb.BackColor = Color.White 

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

 tb.BackColor = tb.BackColor; 

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