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;
}
}
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;
}
Assuming the ForeColor is already set to the desired color (possibly in the designer), all that needs to be done is:
tb.BackColor = tb.BackColor;
This will magically trigger and fix the fore color. Although a comment explaining why this line of code is added is probably also needed.
In VS 2017 this is not even needed.
In designer if you have set your ForeColor and BackColor as desired and want to switch ReadOnly on your TextBox to True
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With