none
Selecionar todos o texto do TextBox RRS feed

  • Pergunta

  • Olá galera,,,

    Estou tendo um pouco de dificuldade em selecionar todo o texto do TextBox.

    Preciso de uma rotina que selecione todo o texto dentro dos meus TextBoxs independente de está utilizando a tecla Tab, Enter ou Setinha pra baixo e até mesmo ao click do Mouse, com utilização do Evento GotFocu as seguintes instruções funcionam... Mas....

            private void SelectionText(object sender)
            {
                TextBox Text = (TextBox)sender;
                Text.Focus();
                Text.SelectionStart = 0;
                Text.SelectionLength = Text.Text.Length;
    
                //-> OU 
    
                Text.SelectAll()
            }
    

    Mas quando o TextBox ganha o focu com um clique de Mouse o texto não é selecionado, percebi também que quando clico e seguro o clique ele é selecionado, mas quando solto o clique no mesmo momento é desselecionado e preciso que seja selecionado de qualquer forma que ganhe o focu.

    Desde já agradeço

    Atenciosamente

    André

    terça-feira, 16 de julho de 2013 19:41

Respostas

  • Bom dia,

    Dê uma olhada nesse exemplo:

    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Input;
    
    namespace WpfApplication1
    {
        public partial class App : Application
        {
            protected override void OnStartup(StartupEventArgs e)
            {
                EventManager.RegisterClassHandler(typeof(TextBox), TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus));
                EventManager.RegisterClassHandler(typeof(TextBox), TextBox.LostFocusEvent, new RoutedEventHandler(TextBox_LostFocus));
                EventManager.RegisterClassHandler(typeof(TextBox), TextBox.PreviewMouseUpEvent, new RoutedEventHandler(TextBox_PreviewMouseUp));
    
                base.OnStartup(e);
            }
    
            private void TextBox_GotFocus(object sender, RoutedEventArgs e)
            {
                TextBox textBox = sender as TextBox;
    
                if (Mouse.LeftButton == MouseButtonState.Released)
                {
                    textBox.SelectAll();
    
                    textBox.Tag = true;
                }
            }
    
            private void TextBox_LostFocus(object sender, RoutedEventArgs e)
            {
                TextBox textBox = sender as TextBox;
    
                textBox.SelectionLength = 0;
    
                textBox.Tag = false;
            }
    
            private void TextBox_PreviewMouseUp(object sender, RoutedEventArgs e)
            {
                TextBox textBox = sender as TextBox;
    
                if ((textBox.Tag == null || (bool)textBox.Tag == false) && textBox.SelectionLength == 0)
                {
                    textBox.Tag = true;
                    textBox.SelectAll();
                }
            }
        }
    }
    

    Eu peguei de um comentário neste link:

    http://madprops.org/blog/wpf-textbox-selectall-on-focus/

    Espero que ajude,


    Samuel Fabel

    quinta-feira, 18 de julho de 2013 13:25

Todas as Respostas

  • Boa tarde,

    Troca  o evento GotFocus por GotKeyboardFocus:

    private void textBox1_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
    {
        textBox1.SelectAll();
    }
    
    private void textBox1_GotMouseCapture(object sender, MouseEventArgs e)
    {
        textBox1.SelectAll();
    }

    Espero que ajude,


    Samuel Fabel

    quarta-feira, 17 de julho de 2013 20:15
  • Olá Samuel !

    Fiz com o Evento que você me passou ocorreu o meu problema, quando o TextBox ganha o focu pelo Tab ou Enter e GotMouseCapture até seleciona o texto ao clicar, mas isso quando não se clica no meio do texto somente seleciona quando clica em alguma região do TexBox que não tenha texto.

    OBS: Resumindo ao clicar e quando o TexBox ganha focu pela tecla UP setinha pra frente pois em meus Formulário o usuário tem como voltar um TexBox anterior utilizando a tecla Up.

    Atenciosamente

    André

    quinta-feira, 18 de julho de 2013 02:02
  • Bom dia,

    Dê uma olhada nesse exemplo:

    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Input;
    
    namespace WpfApplication1
    {
        public partial class App : Application
        {
            protected override void OnStartup(StartupEventArgs e)
            {
                EventManager.RegisterClassHandler(typeof(TextBox), TextBox.GotFocusEvent, new RoutedEventHandler(TextBox_GotFocus));
                EventManager.RegisterClassHandler(typeof(TextBox), TextBox.LostFocusEvent, new RoutedEventHandler(TextBox_LostFocus));
                EventManager.RegisterClassHandler(typeof(TextBox), TextBox.PreviewMouseUpEvent, new RoutedEventHandler(TextBox_PreviewMouseUp));
    
                base.OnStartup(e);
            }
    
            private void TextBox_GotFocus(object sender, RoutedEventArgs e)
            {
                TextBox textBox = sender as TextBox;
    
                if (Mouse.LeftButton == MouseButtonState.Released)
                {
                    textBox.SelectAll();
    
                    textBox.Tag = true;
                }
            }
    
            private void TextBox_LostFocus(object sender, RoutedEventArgs e)
            {
                TextBox textBox = sender as TextBox;
    
                textBox.SelectionLength = 0;
    
                textBox.Tag = false;
            }
    
            private void TextBox_PreviewMouseUp(object sender, RoutedEventArgs e)
            {
                TextBox textBox = sender as TextBox;
    
                if ((textBox.Tag == null || (bool)textBox.Tag == false) && textBox.SelectionLength == 0)
                {
                    textBox.Tag = true;
                    textBox.SelectAll();
                }
            }
        }
    }
    

    Eu peguei de um comentário neste link:

    http://madprops.org/blog/wpf-textbox-selectall-on-focus/

    Espero que ajude,


    Samuel Fabel

    quinta-feira, 18 de julho de 2013 13:25
  • OOO coisa boa,,, Samuel muitíssimo obrigado. Esse overridedo OnStartup

    resolveu meu problema, mais uma vez obrigado.

    Atenciosamente

    André



    quinta-feira, 18 de julho de 2013 23:23