Quando uma caixa de texto C # WinForms recebe foco, quero que ela se comporte como a barra de endereço do navegador.
Para entender o que quero dizer, clique na barra de endereços do seu navegador. Você notará o seguinte comportamento:
- Clicar na caixa de texto deve selecionar todo o texto se a caixa de texto não estiver focada anteriormente.
- O mouse para baixo e arraste na caixa de texto deve selecionar apenas o texto destacado com o mouse.
- Se a caixa de texto já estiver focada, clicar em não selecionará todo o texto.
- Focar a caixa de texto de forma programática ou através das guias do teclado deve selecionar todo o texto.
Eu quero fazer exatamente isso no WinForms.
ALERTA MAIS RÁPIDA DA ARMA: leia o seguinte antes de responder! Obrigado rapazes. :-)
Chamar .SelectAll () durante os eventos .Enter ou .GotFocus não funcionará porque se o usuário clicar na caixa de texto, o cursor será colocado onde ele clicou, desmarcando todo o texto.
Chamar .SelectAll () durante o evento .Click não funcionará porque o usuário não poderá selecionar nenhum texto com o mouse; a chamada .SelectAll () continuará substituindo a seleção de texto do usuário.
Chamar BeginInvoke ((Action) textbox.SelectAll) no evento focus / enter enter não funciona porque quebra a regra # 2 acima, continuará substituindo a seleção do usuário no foco.