Когда текстовое поле C# WinForms получает фокус, я хочу, чтобы он вел себя как адресная строка вашего браузера.Создание WinForms TextBox ведет себя как адресная строка вашего браузера
Чтобы посмотреть, что я имею в виду, щелкните адресную строку вашего веб-браузера. Вы увидите следующее поведение:
- Нажав в текстовом поле, выберите весь текст, если текстовое поле ранее не было сфокусировано.
- Мышь вниз и перетаскивание в текстовое поле должны выбирать только текст, который я выделил с помощью мыши.
- Если текстовое поле уже сфокусировано, щелчок не отображает весь текст.
- Фокусировка текстового поля программно или с помощью клавиатуры, чтобы выбрать весь текст.
Я хочу сделать именно это в WinForms.
FASTEST GAR ALERT: перед тем, как ответить, прочитайте следующее. Спасибо, ребята. :-)
Вызов .SelectAll() во время событий Введите желанные или .GotFocus будет не работы, потому что если пользователь нажал на текстовое поле, каретка будет помещена , где он нажал, таким образом, Отмена выбора всех текст.
Вызов .SelectAll() во время события .Click не будет работать, потому что пользователь не сможет выбрать любой текст с помощью мыши; вызов .SelectAll() будет переписывать текст пользователя.
Вызов BeginInvoke ((Action) textbox.SelectAll) на фокус/ввести событие ввода не работает, поскольку она нарушает правила # 2 выше, он будет держать перекрывая выбор пользователя на фокус.
Просьба пояснить это для «RichTextBox». – Nescio 2008-09-18 23:10:40
Nescio, текстовое поле или богатое текстовое поле. Я попробовал ваше решение и в текстовом поле. – 2008-09-19 14:04:00
Это утечка абстракции. Лучший способ сделать это - установить флаг WM_MOUSEACTIVATE и SelectAll на WM_SETFOCUS, если не WM_MOUSEACTIVATE-ing. – wqw 2010-01-30 16:02:13