Как сделать текстовое поле невыбираемым использованием C#

Я использую C#/.NET для приложения Windows Forms. У меня есть текстовое поле. Как я могу сделать текстовое поле неможно выбрать?

Я не хочу отключать полное текстовое поле.

9
задан Peter Mortensen 6 February 2013 в 10:02
поделиться

5 ответов

Попробуйте использовать свойство CanFocus .

-3
ответ дан 4 December 2019 в 13:00
поделиться

У вас есть несколько вариантов:

  1. Вместо этого используйте элемент управления Label .
  2. Установите textBox.Enabled = false , чтобы предотвратить выбор (см. здесь ).
4
ответ дан 4 December 2019 в 13:00
поделиться

Вероятно, лучший способ - поместить за ним метку, а когда вы хотите сделать текстовое поле отключенным, скрыть его и показать метку на его месте.

1
ответ дан 4 December 2019 в 13:00
поделиться

@Mystere Man: Вам может понадобиться текстовое поле, которое нельзя использовать постоянно. Например, я позволяю пользователю создавать текстовые поля на холсте и перетаскивать их. Чтобы предотвратить выделение и перемещение текста при перетаскивании, мне нужно запретить ввод текста пользователем, а выделение текста также нужно запретить, потому что оно вызывает задержку, которая нарушает мою функцию перетаскивания. В моем приложении пользователь может редактировать текстовое поле только после двойного щелчка на нем, а затем должен щелкнуть за пределами текстового поля, чтобы снова получить возможность переместить его.

В основном у меня такой код (где t - TextBox):

// Prevent text entry
t.IsReadOnly = true;

// Prevent text selection
t.Focusable = false;

Такое поведение предпочтительнее, чем отключение всего элемента управления (t.Enabled = false), поскольку это также остановит события mousedown и doubleclick, что остановит перетаскивание и переход из режима редактирования в режим перетаскивания. Не говоря уже о том, что текстовое поле станет серым.

-3
ответ дан 4 December 2019 в 13:00
поделиться

В событии «Enter» текстового поля установите для ActiveControl другое значение:

    private void txtMyTextbox_Enter(object sender, EventArgs e)
    {
        ActiveControl = objMyOtherControl;
    }
11
ответ дан 4 December 2019 в 13:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: