Also sagen wir, ich habe ein WPF-Formular mit mehreren Textfeldern, wenn Sie Tab auf das Textfeld und es hat bereits etwas, ich möchte den gesamten Text in diesem Feld so auswählen Das Tippen löscht diesen Text. Wenn Sie mit der Maus auf das Feld klicken, bedeutet das wahrscheinlich, dass Sie einen Buchstaben irgendwo ändern möchten. Markieren Sie in diesem Fall also nicht alle Buchstaben. Scheint einfach, aber eine gute Lösung, wie mir bisher entgangen ist. Hier ist, was ich bisher habe, ist sehr schließen zu arbeiten, aber nicht ganz perfekt.Textbox SelectAll auf Registerkarte, aber nicht Mausklick
<Style x:Key="TextBoxStyle" TargetType="TextBox">
<EventSetter Event="GotKeyboardFocus" Handler="EventSetter_OnHandler" />
</Style>
private void EventSetter_OnHandler(object sender, RoutedEventArgs e)
{
TextBox txt = sender as TextBox;
if (txt != null) txt.SelectAll();
}
Also, wenn die Box wählt Tastatur den Fokus erhält es alle, so in das Textfeld Tabbing wählt den gesamten Text perfekt. Bei Mausklicks wird jedoch auch diese Methode aufgerufen, die auch den Text hervorhebt, aber der Klick bringt den Cursor dann dorthin, wo die Maus geklickt hat. So funktional ist es perfekt, aber es stört mich immer noch, dass es flackert, alles auszuwählen, wenn die Maus klickt. Gibt es einen besseren Weg, dies zu tun, oder eine Art Check in meinem Event durchzuführen, um zu wissen, dass ich den Tastaturfokus durch einen Mausklick und nicht durch einen Tab gewonnen habe?
@KDiTraglia: Ich habe gehofft, dass der 'e.Device' auch ein' MouseDevice' sein könnte, aber wie der Name des args nur Tastatur-es schon sagt, (ist e.Device Keyboard) ein 'wenn 'Check wäre schön gewesen. –
Aber was ist, wenn sie den Textkasten mit der Maus fokussieren, während sie den Tab halten! –
@KDiTraglia: Ich bezweifle, dass jemals passieren wird, wenn Sie Tab der Fokus Zyklen die ganze Zeit halten. –