Когда текстовое поле C # WinForms получает фокус, я хочу, чтобы оно велось как адресная строка вашего браузера.
Чтобы увидеть, что я имею в виду, нажмите в адресной строке вашего браузера. Вы заметите следующее поведение:
- При щелчке по текстовому полю следует выделить весь текст, если текстовое поле не было предварительно сфокусировано.
- Мышь вниз и перетаскивание в текстовое поле должны выделить только текст, который я выделил мышью.
- Если текстовое поле уже выделено, нажатие не выделяет весь текст.
- Фокусировка текстового поля программно или с помощью клавиш клавиатуры должна выделять весь текст.
Я хочу сделать именно это в WinForms.
Предупреждение о быстром огнестрельном оружии: пожалуйста, прочитайте следующее, прежде чем ответить! Спасибо, ребята. : -)
Вызов .SelectAll () во время
события .Enter или .GotFocus не будут
работа , потому что если пользователь нажал
текстовое поле, каретка будет размещена
где он нажал, отменив все
текст.
Вызов .SelectAll () во время события .Click не будет работать , потому что пользователь не сможет выделить текст мышью; вызов .SelectAll () будет перезаписывать выделенный пользователем текст.
Вызов BeginInvoke ((Action) textbox.SelectAll) при вводе события focus / enter не работает , поскольку он нарушает правило № 2, описанное выше, он будет переопределять выбор пользователя в фокусе.