因此,假设我有一个带有多个文本框的 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();
}
因此,当该框获得键盘焦点时,它会选择所有文本,因此对文本框进行制表符可以完美地选择所有文本。但是,如果鼠标单击此方法也会被调用,这也会突出显示文本,但单击会将光标置于鼠标单击之后的位置。所以在功能上它是完美的,但它仍然困扰着我,当鼠标点击时它会闪烁选择所有内容。有没有更好的方法来做到这一点,或者在我的事件中进行某种检查以知道我通过鼠标单击而不是选项卡获得了键盘焦点?