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