Подтвердить что ты не робот

Автоматическое выделение текста в элементе управления текстовым полем

Как вы автоматически выделяете текст в элементе управления текстовым полем, когда элемент управления получает фокус.

4b9b3361

Ответ 1

В Windows Forms и WPF:

textbox.SelectionStart = 0;
textbox.SelectionLength = textbox.Text.Length;

Ответ 2

В asp.net:

textBox.Attributes.Add("onfocus","this.select();");

Ответ 3

Если вы хотите сделать это для своего приложения WPF, вы можете сделать следующее: - В файле App.xaml.cs

    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(); 
    }

Ответ 4

Если вы хотите, чтобы текст в текстовом поле был выделен щелчком мыши, вы можете сделать это простым, добавив:

this.textBox1.Click += new System.EventHandler(textBox1_Click);

в

partial class Form1
{
    private void InitializeComponent()
    {

    }
}

где textBox1 - это имя соответствующего текстового поля, расположенного в Form1

И затем создайте определение метода:

void textBox1_Click(object sender, System.EventArgs e)
{
    textBox1.SelectAll();
}

в

public partial class Form1 : Form
{

}

Ответ 5

Вот код, который я использовал. Он требует добавления прикрепленного свойства к каждому текстовому полю, которое вы хотите выбрать. Увидев, что я не хочу, чтобы все текстовые поля в моем приложении выполняли это, это было лучшим решением для меня.

public class AutoSelectAll
{
    public static bool GetIsEnabled(DependencyObject obj) 
    { 
        return (bool)obj.GetValue(IsEnabledProperty); 
    } 
    public static void SetIsEnabled(DependencyObject obj, bool value) 
    { 
        obj.SetValue(IsEnabledProperty, value);
    }

    static void ue_Loaded(object sender, RoutedEventArgs e)
    {
        var ue = sender as FrameworkElement;
        if (ue == null)
            return;
        ue.GotFocus += ue_GotFocus;
        ue.GotMouseCapture += ue_GotMouseCapture;
    }

    private static void ue_Unloaded(object sender, RoutedEventArgs e)
    {
        var ue = sender as FrameworkElement;
        if (ue == null)
            return;
        //ue.Unloaded -= ue_Unloaded;
        ue.GotFocus -= ue_GotFocus;
        ue.GotMouseCapture -= ue_GotMouseCapture;
    }

    static void ue_GotFocus(object sender, RoutedEventArgs e)
    {
        if (sender is TextBox)
        {
            (sender as TextBox).SelectAll();
        }
        e.Handled = true;
    }

    static void ue_GotMouseCapture(object sender, MouseEventArgs e)
    {
        if (sender is TextBox)
        {
            (sender as TextBox).SelectAll();
        }
        e.Handled = true;
    }

    public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached("IsEnabled", typeof(bool),
        typeof(AutoSelectAll), new UIPropertyMetadata(false, IsEnabledChanged));

    static void IsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var ue = d as FrameworkElement;
        if (ue == null)
            return;
        if ((bool)e.NewValue)
        {
            ue.Unloaded += ue_Unloaded;
            ue.Loaded += ue_Loaded;
        }
    }
} 

Основное изменение, которое я сделал здесь, заключалось в добавлении загруженного события ко многим из примеров, которые я видел. Это позволяет продолжить работу кода после его выгрузки (т.е. Изменяется вкладка). Также я включил код, чтобы убедиться, что текст будет выбран, если вы нажмете на текстовое поле с помощью мыши, а не только на клавиатуру. Примечание. Если вы на самом деле нажимаете текст в текстовом поле, курсор вставлен между буквами, как следует.

Вы можете использовать это, включив в свой xaml следующий тег.

<TextBox  
    Text="{Binding Property}"
    Library:AutoSelectAll.IsEnabled="True" />

Ответ 6

Я думаю, что самый простой способ - TextBox.SelectAll как в событии Enter:

private void TextBox_Enter(object sender, EventArgs e)
{
    ((TextBox)sender).SelectAll();
}

Ответ 7

Это очень легко достичь с помощью встроенного метода SelectAll

Просто cou может написать это:

txtTextBox.Focus();
txtTextBox.SelectAll();

И все в текстовом поле будет выбрано:)

Ответ 8

Если вам нужно сделать это для большого количества текстовых полей (в Silverlight или WPF), вы можете использовать технику, используемую в сообщении в блоге: http://dnchannel.blogspot.com/2010/01/silverlight-3-auto-select-text-in.html. Он использует Attached Properties и Routed Events.

Ответ 9

В случае событий "Enter" (например: нажмите клавишу Tab) или "Первый щелчок" будет выбран весь текст. dotNET 4.0

public static class TbHelper
{
    // Method for use
    public static void SelectAllTextOnEnter(TextBox Tb)
    {
        Tb.Enter += new EventHandler(Tb_Enter);
        Tb.Click += new EventHandler(Tb_Click);
    }

    private static TextBox LastTb;

    private static void Tb_Enter(object sender, EventArgs e)
    {
        var Tb = (TextBox)sender;
        Tb.SelectAll();
        LastTb = Tb;
    }

    private static void Tb_Click(object sender, EventArgs e)
    {
        var Tb = (TextBox)sender;
        if (LastTb == Tb)
        {
            Tb.SelectAll();
            LastTb = null;
        }
    }
}

Ответ 10

Я не знаю, почему никто не упоминал об этом, но вы также можете это сделать, это работает для меня

textbox.Select(0, textbox.Text.Length)

Ответ 11

Вы можете использовать это, содержательное.: D

TextBox1.Focus();    
TextBox1.Select(0, TextBox1.Text.Length);

Ответ 12

 textBoxX1.Focus();
 this.ActiveControl = textBoxX1;
 textBoxX1.SelectAll();

Ответ 13

textbox.Focus();
textbox.SelectionStart = 0;
textbox.SelectionLength = textbox.Text.Length;