Я использую C#/.NET для приложения Windows Forms. У меня есть текстовое поле. Как я могу сделать текстовое поле неможно выбрать?
Я не хочу отключать полное текстовое поле.
У вас есть несколько вариантов:
Label
. textBox.Enabled = false
, чтобы предотвратить выбор (см. здесь ). Вероятно, лучший способ - поместить за ним метку, а когда вы хотите сделать текстовое поле отключенным, скрыть его и показать метку на его месте.
@Mystere Man: Вам может понадобиться текстовое поле, которое нельзя использовать постоянно. Например, я позволяю пользователю создавать текстовые поля на холсте и перетаскивать их. Чтобы предотвратить выделение и перемещение текста при перетаскивании, мне нужно запретить ввод текста пользователем, а выделение текста также нужно запретить, потому что оно вызывает задержку, которая нарушает мою функцию перетаскивания. В моем приложении пользователь может редактировать текстовое поле только после двойного щелчка на нем, а затем должен щелкнуть за пределами текстового поля, чтобы снова получить возможность переместить его.
В основном у меня такой код (где t - TextBox):
// Prevent text entry
t.IsReadOnly = true;
// Prevent text selection
t.Focusable = false;
Такое поведение предпочтительнее, чем отключение всего элемента управления (t.Enabled = false
), поскольку это также остановит события mousedown и doubleclick, что остановит перетаскивание и переход из режима редактирования в режим перетаскивания. Не говоря уже о том, что текстовое поле станет серым.
В событии «Enter» текстового поля установите для ActiveControl другое значение:
private void txtMyTextbox_Enter(object sender, EventArgs e)
{
ActiveControl = objMyOtherControl;
}