Как вы меняете цвет текста только для чтения TextBox?
Я пишу словарь с С#, и я использую текстовое поле для отображения определений. Очевидно, мне нужно установить для свойства ReadOnly значение true, но когда я это сделаю, я не могу изменить цвет текста. Однако изменение шрифта отлично работает. Что мне делать?
Я использую этот код, и настройка цвета работает отлично, когда свойство ReadOnly является ложным, но не изменяется, когда оно истинно:
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;
}
}
Ответы
Ответ 1
Свойство ForeColor текстового Text-модуля, доступного только для чтения, по какой-либо причине выходит замуж за свойство 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;
}
Ответ 2
Благодаря предложению LarsTech мне пришлось установить задний цвет, а затем снова установить его
Это метод, который работал у меня:
tb.BackColor = Color.Black
tb.ForeColor = Color.Black
tb.BackColor = Color.White
Ответ 3
Предполагая, что ForeColor уже установлен на нужный цвет (возможно, в дизайнере), все, что нужно сделать, это:
tb.BackColor = tb.BackColor;
Это волшебное срабатывание и исправление цвета переднего плана. Хотя комментарий, объясняющий, почему эта строка кода добавлена, вероятно, также необходима.
Ответ 4
В VS 2017 это даже не нужно.
В дизайнере, если вы установили ForeColor и BackColor по своему желанию и хотите переключить ReadOnly на вашем TextBox на True
- Измените BackColor на любой случайный цвет и скомпилируйте
- Измените BackColor на нужный вам цвет и скомпилируйте