我正在用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;
}
}
答案 0 :(得分:42)
由于某种原因,只读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;
}
答案 1 :(得分:2)
假设ForeColor已经设置为所需的颜色(可能在设计师中),所有需要做的就是:
tb.BackColor = tb.BackColor;
这将神奇地触发并修复前色。虽然可能还需要解释为什么添加这行代码的注释。
答案 2 :(得分:1)
感谢LarsTech建议我必须设置背面颜色,然后重新设置
这是对我有用的方法:
tb.BackColor = Color.Black
tb.ForeColor = Color.Black
tb.BackColor = Color.White
答案 3 :(得分:1)
在VS 2017中甚至不需要。
在设计器中,如果您已根据需要设置了ForeColor和BackColor并希望将TextBox上的ReadOnly切换为True