title: Textbox SelectAll on tab but not mouse click
body: <p>So lets say I have a WPF form with several text boxes, if you tab to the text box and it already has something in it, I want to select all the text in that box so typing will erase that text.  If you mouse click on the box, it probably means you want to change a letter somewhere, so do not highlight all in this case.  Seems easy enough, but a good solution as so far eluded me.  Here's what I have so far that is very <em>close</em> to working, but not quite perfect.</p>
  
  <pre><code>&lt;Style x:Key="TextBoxStyle" TargetType="TextBox"&gt;
      &lt;EventSetter Event="GotKeyboardFocus" Handler="EventSetter_OnHandler" /&gt;
  &lt;/Style&gt;
  </code></pre>
  
  <p></p>
  
  <pre><code>private void EventSetter_OnHandler(object sender, RoutedEventArgs e)
  {
      TextBox txt = sender as TextBox;
      if (txt != null) txt.SelectAll();
  }
  </code></pre>
  
  <p>So when the box gets keyboard focus it selects all, so tabbing to the text box selects all the text perfectly.  However if the mouse clicks this method gets called as well, which also highlights the text, but the click then puts the cursor where the mouse clicked after.  So functionally it's perfect, but it still bothers me that it flickers selecting everything when the mouse clicks.  Any better way to do this, or put some kind of check in my event to know that I gained keyboard focus from a mouse click and not a tab?</p>