如何在获得焦点时选择文本框中的所有文本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在获得焦点时选择文本框中的所有文本相关的知识,希望对你有一定的参考价值。
在Windows手机中,当TextBox具有焦点时,如何选择文本框中的所有文本?
我尝试设置Textbox的get focus属性:
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox .SelectAll();
}
我看到的是我看到所有文本被选中1-2秒然后它返回光标模式(即1闪烁线)。
答案
我在WPF上遇到了同样的问题,并设法解决了这个问题。不确定你是否可以使用我使用的,但基本上你的代码看起来像:
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox .CaptureMouse()
}
private void TextBox_GotMouseCapture(object sender, RoutedEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.SelectAll();
}
private void TextBox_IsMouseCaptureWithinChanged(object sender, RoutedEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.SelectAll();
}
所有事件都连接到原始文本框。如果这对您不起作用,也许您可以用CaptureTouch替换CaptureMouse(并使用适当的事件)。祝好运!
另一答案
你可以尝试这个代码,
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
String sSelectedText = mytextbox.SelectedText;
}
如果用户单击选择后出现的复制图标,它将被复制,如果您想以编程方式执行此操作,则可以尝试此操作
DataPackage d = new DataPackage();
d.SetText(selectedText);
Clipboard.SetContent(d);
我建议在其他事件而不是gotfocus中进行复制,因为这将在用户点击文本字段后立即触发,因此在没有实际输入文本时将调用此方法。
另一答案
protected override void OnStartup(StartupEventArgs e)
{
//works for tab into textbox
EventManager.RegisterClassHandler(typeof(TextBox),
TextBox.GotFocusEvent,
new RoutedEventHandler(TextBox_GotFocus));
//works for click textbox
EventManager.RegisterClassHandler(typeof(Window),
Window.GotMouseCaptureEvent,
new RoutedEventHandler(Window_MouseCapture));
base.OnStartup(e);
}
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
(sender as TextBox).SelectAll();
}
private void Window_MouseCapture(object sender, RoutedEventArgs e)
{
var textBox = e.OriginalSource as TextBox;
if (textBox != null)
textBox.SelectAll();
}
以上是关于如何在获得焦点时选择文本框中的所有文本的主要内容,如果未能解决你的问题,请参考以下文章
获得焦点时如何选择 JFormattedTextField 中的所有文本?