Текстовое поле только для чтения в C#

В C# я создаю окно формы для LAN-мессенджера с двумя текстовыми полями. Мне нужно создать конкретное текстовое поле как доступное только для чтения, но любой отправленный в него текст отображается серым, что нежелательно. Есть ли способ предотвратить это?

Ответов (5)

Серый цвет указывает на состояние текстового поля только для чтения. Это визуальная индикация для пользователя, которому не нужно будет вводить текст, чтобы обнаружить, что текстовое поле фактически отключено.

Если вам нужно только поведение только для чтения, вам лучше использовать Label.

Вы можете заменить его меткой или текстовым полем в событии KeyPress, задав для параметра handled значение true:

void  textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}

Вы можете установить цвет текста, установив свойство Textbox ForeColor .

Например:

myTextBox.ForeColor = Color.Black

Я бы использовал текстовое поле и установил ReadOnly на true, ForeColor на Color.Black и BackColor на Color.White. Таким образом, вы все еще можете выделить текст и скопировать его с помощью Ctrl-C.

Чтобы текстовое поле оставалось белым (или Window), когда оно доступно только для чтения, вы должны явно установить для свойства BackColor значение Window. Для этого вы должны сначала установить BackColor на какое-то другое значение, а затем обратно на Window. Свойство backcolor должно стать полужирным, указывая на то, что оно больше не является значением по умолчанию.