Lorsqu'une zone de texte WinForms C# reçoit le focus, je veux qu'elle se comporte comme la barre d'adresse de votre navigateur.
Pour voir ce que je veux dire, cliquez dans la barre d'adresse de votre navigateur web. Vous remarquerez le comportement suivant :
- Un clic dans la zone de texte devrait sélectionner tout le texte si la zone de texte n'était pas précédemment focalisée.
- Le fait d'appuyer sur la souris et de la faire glisser dans la zone de texte devrait sélectionner uniquement le texte que j'ai mis en évidence avec la souris.
- Si la zone de texte est déjà focalisée, le fait de cliquer ne permet pas de sélectionner tout le texte.
- Le fait de mettre l'accent sur la zone de texte de manière programmatique ou par le biais de la tabulation du clavier devrait permettre de sélectionner tout le texte.
Je veux faire exactement cela dans WinForms.
ALERTE SUR LE PISTOLET LE PLUS RAPIDE : veuillez lire ce qui suit avant de répondre ! Merci les gars. :-)
L'appel de .SelectAll() pendant l'événement .Enter ou .GotFocus ne fonctionnera pas fonctionnera pas car si l'utilisateur a cliqué sur le bouton boîte de texte, le signe d'insertion sera placé où il a cliqué, désélectionnant ainsi tout le texte. texte.
L'appel de .SelectAll() pendant l'événement .Click ne fonctionne pas car l'utilisateur ne pourra pas sélectionner de texte avec la souris ; l'appel .SelectAll() continuera à écraser la sélection de texte de l'utilisateur.
L'appel de BeginInvoke((Action)textbox.SelectAll) sur l'événement focus/entrée ne fonctionne pas parce qu'elle enfreint la règle n° 2 ci-dessus, elle continuera à remplacer la sélection de l'utilisateur au moment du focus.
3 votes
Veuillez préciser que c'est pour une "RichTextBox".
0 votes
Nescio, une zone de texte ou une zone de texte enrichi fera l'affaire. J'ai aussi essayé votre solution sur une zone de texte.
0 votes
C'est une fuite d'abstraction. La meilleure façon de procéder est de marquer WM_MOUSEACTIVATE et SelectAll sur WM_SETFOCUS s'il n'est pas WM_MOUSEACTIVATE-ing.
0 votes
Version WPF : stackoverflow.com/questions/4161531/