Gdy pole tekstowe C # WinForms otrzymuje fokus, chcę, aby zachowywało się jak pasek adresu przeglądarki.
Aby zobaczyć, co mam na myśli, kliknij pasek adresu przeglądarki internetowej. Zauważysz następujące zachowanie:
- Kliknięcie w polu tekstowym powinno zaznaczyć cały tekst, jeśli pole tekstowe nie było wcześniej zaznaczone.
- Wskaźnik myszy w dół i przeciągnij w polu tekstowym powinien zaznaczyć tylko tekst, który zaznaczyłem myszą.
- Jeśli pole tekstowe jest już fokusem, kliknięcie nie powoduje zaznaczenia całego tekstu.
- Skupienie pola tekstowego programowo lub za pomocą klawisza tabulacji na klawiaturze powinno zaznaczyć cały tekst.
Chcę dokładnie to zrobić w WinForms.
OSTRZEŻENIE NAJSZYBSZY PISTOLET: przeczytaj poniższe informacje przed udzieleniem odpowiedzi! Dzięki chłopaki. :-)
Wywołanie .SelectAll () podczas zdarzeń .Enter lub .GotFocus nie zadziała, ponieważ jeśli użytkownik kliknie pole tekstowe, daszek zostanie umieszczony w miejscu, w którym kliknął, usuwając tym samym cały tekst.
Wywołanie .SelectAll () podczas zdarzenia .Click nie zadziała, ponieważ użytkownik nie będzie mógł zaznaczyć myszą żadnego tekstu; wywołanie .SelectAll () będzie nadal nadpisywać zaznaczenie tekstu użytkownika.
Wywołanie BeginInvoke (pole tekstowe (Action ).SelectAll) w zdarzeniu fokus / enter nie działa, ponieważ łamie regułę nr 2 powyżej, będzie nadpisywać zaznaczenie użytkownika na fokusie.