Так что давайте скажем, что у меня есть форма WPF с несколькими текстовыми полями, если вы вставляете текст в текстовое поле, и в нем уже есть что-то, я хочу выделить весь текст в этом поле, чтобы при наборе текста был удален этот текст. Если вы нажмете мышкой на поле, это, вероятно, означает, что вы хотите где-то изменить письмо, поэтому не выделяйте все в этом случае. Кажется, достаточно легко, но хорошее решение, которое до сих пор ускользало от меня. Вот что у меня до сих пор, что очень близко к работе, но не совсем идеально.
<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();
}
Итак, когда поле получает фокус клавиатуры, он выбирает все, поэтому вставляя текст в текстовое поле, он отлично отображает текст. Однако, если щелчок мышью, этот метод также вызывается, что также подчеркивает текст, но щелчок затем помещает курсор туда, куда нажата кнопка мыши. Так функционально это прекрасно, но меня все равно беспокоит, что он мерцает, выбирая все, когда кликает мышкой. Любой лучший способ сделать это, или поставить какую-то проверку в моем случае, чтобы узнать, что я получил фокус клавиатуры с помощью мыши, а не вкладки?