Wenn ein C # WinForms-Textfeld den Fokus erhält, soll es sich wie die Adressleiste Ihres Browsers verhalten.
Um zu sehen, was ich meine, klicken Sie in die Adressleiste Ihres Webbrowsers. Sie werden das folgende Verhalten bemerken:
- Durch Klicken in das Textfeld sollte der gesamte Text ausgewählt werden, wenn das Textfeld zuvor nicht fokussiert war.
- Wenn Sie mit der Maus nach unten und in das Textfeld ziehen, sollte nur der Text ausgewählt werden, den ich mit der Maus hervorgehoben habe.
- Wenn das Textfeld bereits fokussiert ist, wird durch Klicken nicht der gesamte Text ausgewählt.
- Wenn Sie das Textfeld programmgesteuert oder über die Tastatur tippen, sollte der gesamte Text ausgewählt werden.
Ich möchte genau dies in WinForms tun.
SCHNELLSTER GEWEHRWARNUNG: Bitte lesen Sie Folgendes, bevor Sie antworten! Danke Leute. :-)
Das Aufrufen von .SelectAll () während der Ereignisse .Enter oder .GotFocus funktioniert nicht, da beim Klicken auf das Textfeld das Caret dort platziert wird, wo er geklickt hat, wodurch die Auswahl des gesamten Texts aufgehoben wird .
Das Aufrufen von .SelectAll () während des .Click-Ereignisses funktioniert nicht, da der Benutzer keinen Text mit der Maus auswählen kann. Der Aufruf von .SelectAll () überschreibt weiterhin die Textauswahl des Benutzers.
Das Aufrufen von BeginInvoke ((Action) textbox.SelectAll) bei focus / enter event enter funktioniert nicht, da es gegen Regel 2 oben verstößt und die Auswahl des Benutzers bei focus weiterhin überschreibt.