C# 选择文本框WPF中的所有文本
我不知道为什么我的代码不起作用。 我想,当一个文本框被点击时,选择里面的所有文本来整体编辑它 我的代码:C# 选择文本框WPF中的所有文本,c#,wpf,events,textbox,C#,Wpf,Events,Textbox,我不知道为什么我的代码不起作用。 我想,当一个文本框被点击时,选择里面的所有文本来整体编辑它 我的代码: private void XValue_PreviewMouseDown(object sender, MouseButtonEventArgs e) { ((TextBox)sender).SelectAll(); } XAML代码: <TextBox x:Name="XValue" Text="{Binding XInitValue, StringFormat={}{0:
private void XValue_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
((TextBox)sender).SelectAll();
}
XAML代码:
<TextBox x:Name="XValue" Text="{Binding XInitValue, StringFormat={}{0:#,0.0000}}" Width="80" VerticalAlignment="Center" PreviewMouseDown="XValue_PreviewMouseDown" ></TextBox>
事件发生,但未选择文本您可以处理
GotKeyboardFocus
事件并使用dispatcher:
private void XValue_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
var textBox = ((TextBox)sender);
textBox.Dispatcher.BeginInvoke(new Action(() =>
{
textBox.SelectAll();
}));
}
或
PreviewMouseDown
事件。关键是使用dispatcher。我试过,发现它只有在设置了数据上下文之后才能工作 问题在于触发事件后控件如何聚焦。您需要编写e.Handled=true代码>,防止焦点冒泡
private void XValue_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
((TextBox)sender).SelectAll();
e.Handled = true;
}
看看你可以使用@KrzysztofBracha在他的评论中提出的解决方案之一,或者如果你只想在鼠标点击时选择文本,而不想在焦点上选择文本,请使用PreviewMouseUp代替PreviewMouseDown。这是否回答了你的问题?你其实不需要这些。只要确保你调用e.Handled=true;毕竟,有人能详细解释一下为什么这被否决了吗?这是问题的实际解决方案。我必须添加((文本框)sender.Focus();在选择“全部”之前,让这项工作变得有趣。@Frederik。