Я пробовал приведенный ниже код, чтобы выделить весь текст в текстовом поле при фокусе. Но это не работает.
XAML:
<TextBox Text = "test1" Width = "100" Height = "200"
GotFocus = "TextBox_GotFocus"></TextBox>
C#:
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
(sender as TextBox).SelectAll();
//(sender as TextBox).Select(0, (sender as TextBox).Text.Length);
(sender as TextBox).Focus();
e.Handled = true;
}
Я также пробовал с асинхронным. Серфите много, но ничего не работает. Пожалуйста, предложите?
Возможный дубликат Как автоматически выделить весь текст в фокусе в текстовом поле WPF?





в файле App.xaml
<Application.Resources>
<Style TargetType = "TextBox">
<EventSetter Event = "GotKeyboardFocus" Handler = "TextBox_GotKeyboardFocus"/>
</Style>
</Application.Resources>
в файле App.xaml.cs
private void TextBox_GotKeyboardFocus(Object sender, KeyboardFocusChangedEventArgs e)
{
TextBox tb = (TextBox)sender;
tb.Dispatcher.BeginInvoke(new Action(() => tb.SelectAll()));
}
С помощью этого кода вы достигнете всех TextBox в своем приложении.
Вы можете использовать диспетчер:
private void TextBox_GotFocus(object sender, RoutedEventArgs e)
{
TextBox textBox = (TextBox)sender;
textBox.Dispatcher.BeginInvoke(new Action(() => textBox.SelectAll()));
}
Спасибо .. все работает. не могли бы вы объяснить, почему мы вызываем метод внутри Dispatcher. Есть ли для этого какая-то конкретная причина?
Это в основном проблема времени. Dispatcher.BeginInvoke планирует выполнение делегата, вызывающего SelectAll(), когда поток пользовательского интерфейса простаивает.
Дубликат
https://stackoverflow.com/questions/660554/how-to-automatically-select-all-text-on-focus-in-wpf-textbox