Попробуйте выделить весь текст в TextBox при фокусировке/нажатииC#

Место общения программистов C#
Anonymous
Попробуйте выделить весь текст в TextBox при фокусировке/нажатии

Сообщение Anonymous »

Я пытаюсь имитировать поведение, когда пользователь нажимает на поле имени пользователя (например) и весь текст (имя) выделяется автоматически, чтобы его было проще заменить новым. Но когда пользователь снова нажимает на поле, текст/имя переходят в невыделенное состояние, поэтому пользователь может продолжать писать текст из курсора. Я уверен, что все знают, что я пытаюсь описать, поскольку мы все сталкивались с этим много раз, когда писали в текстовом поле или хотели изменить его содержимое...
Итак, проблема в том, что когда я использую событие Enter focus и применяю SelectAll(), это просто не работает вообще! Текст еще не выбран. Я также пытался использовать событие Click, которое работало нормально, но у меня возникли трудности со вторым щелчком мыши, так как все щелчки мыши снова запускают метод SelectAll(), текст всегда все еще выделен. Вероятно, я мог бы использовать глобальные переменные, которые сохраняют состояние выбора текста и меняют состояния наоборот, но я не хочу использовать какие-либо дополнительные переменные, если в этом нет необходимости (каждая для всех текстовых полей... нет).
Для этого должно быть простое и элегантное решение, поскольку многие приложения и веб-сайты используют это поведение для сделать жизнь пользователей проще. Я прочитал несколько форумов и нашел какое-то решение, но оно выглядит излишне сложнее, чем я надеялся.
Это соответствующая часть моего кода... ничего особенного!

Код: Выделить всё

    private void G_tbx_canvasSize_Enter(object sender, EventArgs e)
{
(sender as TextBox).SelectAll();
}
Это должно работать следующим образом:
  • Пользователь нажимает на текстовое поле (TB)
  • Фокус на TB
  • Код запускается и выбирает весь текст
  • Пользователь снова нажимает на TB
  • Поскольку это уже сфокусировано, код не запустится снова, поэтому текст по умолчанию отменяет выделение. (Я тестировал это!)
  • Если пользователь уйдет и снова нажмет TB, все запустится снова и снова..
Пожалуйста, помогите! Я не могу понять, почему это происходит, это не должно происходить...
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/656 ... us-clicked

Вернуться в «C#»