Два соответствующих свойства ReadOnly и Enabled. ReadOnly = true предотвращает редактирование серого фона, но позволяет фокусироваться. Enabled = false затеняет фон, текст и предотвращает редактирование или фокусировку.
Соглашения о пользовательском интерфейсе Windows предписывают пользователю визуально подсказывать, что элемент управления доступен только для чтения (таким образом, он не будет пытаться редактировать его и впоследствии будет разочарован). Неактивен выключенное состояние заданной условность системы, но это спорно слишком много кии (и не legibile достаточно одного).
Самый простой способ - это, вероятно, установить для элемента управления значение ReadOnly, установить фон для System.Drawing.SystemColors.Window, а затем заблокировать сообщения фокуса. Вы можете сделать это, перехватывая события OnEnter и немедленно перемещая Focus на другой элемент управления, который не доступен только для чтения (например, кнопка «Закрыть» или «Редактировать»). Или вы можете получить свой собственный контроль и есть любые сообщения WM_SETFOCUS. Пример ниже.
Я полагаю, что различные сторонние наборы управления предоставляют вам дополнительные возможности и детализацию.
public class ReadOnlyTextBox : TextBox
{
const uint WM_SETFOCUS = 0x0007;
public ReadOnlyTextBox()
{
this.ReadOnly = true;
this.BackColor = System.Drawing.SystemColors.Window;
this.ForeColor = System.Drawing.SystemColors.WindowText;
}
protected override void WndProc(ref Message m)
{
// eat all setfocus messages, pass rest to base
if (m.Msg != WM_SETFOCUS)
base.WndProc(ref m);
}
}