Fare in modo che un TextBox di WinForms si comporti come la barra degli indirizzi del browser

Quando una casella di testo C # WinForms riceve lo stato attivo, voglio che si comporti come la barra degli indirizzi del browser.

Per vedere cosa intendo, clicca nella barra degli indirizzi del tuo browser web. Noterai il seguente comportamento:

  1. Cliccando nella casella di testo dovrebbe selezionare tutto il testo se la casella di testo non è stata precedentemente focalizzata.
  2. Mouse giù e trascina nella casella di testo dovrebbe selezionare solo il testo che ho evidenziato con il mouse.
  3. Se la casella di testo è già a fuoco, fare clic su non seleziona tutto il testo.
  4. La messa a fuoco della casella di testo a livello di programmazione o tramite la tabulazione della tastiera dovrebbe selezionare tutto il testo.

Voglio fare esattamente questo in WinForms.

AVVELENATORE PIÙ VELOCE: leggere quanto segue prima di rispondere! Grazie ragazzi. 🙂

Chiamare .SelectAll () durante gli eventi .Enter o .GotFocus non funzionerà perché se l’utente ha fatto clic sulla casella di testo, il cursore verrà posizionato dove ha fatto clic, deselezionando quindi tutto il testo.

Chiamare .SelectAll () durante l’evento .Click non funzionerà perché l’utente non sarà in grado di selezionare alcun testo con il mouse; la chiamata .SelectAll () continuerà a sovrascrivere la selezione del testo dell’utente.

Chiamare BeginInvoke ((Action) textbox.SelectAll) su focus / enter l’evento enter non funziona perché infrange la regola # 2 sopra, manterrà la priorità sulla selezione dell’utente.