Amen Amen - 2 months ago 38
C# Question

How do you change the text color of a readonly TextBox?

I am writing a dictionary with c# and I'm using a textbox to show the definitions. Obviously, I need to set the ReadOnly property to true, but when I do that I'm unable to change the color of the text. Changing the Font however works fine. What should I do?

I'm using this code and setting the color works perfectly fine when the ReadOnly property is false, but doesn't change when it is 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;
}
}

Answer

The ForeColor property of a read-only TextBox is married to the BackColor property for some reason. So if you "tickle" the BackColor property, it will set the ForeColor property after that:

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