Коли текстове поле C # WinForms отримує фокус, я хочу, щоб він поводився як адресний рядок вашого браузера.
Щоб побачити, що я маю на увазі, натисніть на адресному рядку веб-браузера. Ви помітите таку поведінку:
- Якщо натиснути в текстовому полі, слід вибрати весь текст, якщо текстове поле раніше не було зосереджено.
- Наведіть курсор миші та перетягніть її в текстовому полі, слід вибрати лише той текст, який я виділив мишкою.
- Якщо текстове поле вже орієнтоване, клацання не вибирає весь текст.
- Якщо фокусувати текстове поле програмно або через вкладку клавіатури, слід вибрати весь текст.
Я хочу зробити саме це в WinForms.
ШВИДКОГО СПІЛЬНОГО АВТОМОБІЛЮ: будь ласка, прочитайте наступне, перш ніж відповісти! Спасибі, хлопці. :-)
Виклик .SelectAll () під час подій .Enter або .GotFocus не працюватиме, оскільки якщо користувач натиснув текстове поле, карету буде розміщено там, де він натиснув, таким чином скасувавши вибір всього тексту.
Виклик .SelectAll () під час події .Click не працюватиме, оскільки користувач не зможе вибрати будь-який текст за допомогою миші; виклик .SelectAll () буде продовжувати перезапис вибору тексту користувача.
Виклик BeginInvoke ((Action) textbox.SelectAll) на фокусування / введення події введення не працює, оскільки він порушує правило №2 вище, він буде продовжувати переосмислювати вибір користувача на фокус.