Páginas

Pesquisar neste blog

28 de fevereiro de 2019

SelectAll no Controle MaskedTextBox

Recentemente resolvi utilizar um controle MaskedTextBox em uma aplicação Windows Forms, para preencher um campo de data e utilizar a facilidade da máscara de data.

Para facilitar para o usuário, quando o formulário era apresentado na aplicação o campo de data já aparecia preenchido com a data atual. Bastava que o usuário aceitasse a data atual ou se quisesse alterar a data, o campo já apareceria selecionado facilitando assim a inserção da nova data.

form1

Para fazer com que a informação no campo de data apareça selecionada quando o foco está no campo de data normalmente utilizamos o método SelectAll() do controle. No caso do controle MaskedTextBox este método não funciona diretamente como no controle TextBox. Encontrei duas formas de conseguir selecionar o texto como indicado na figura acima:

A primeira forma é através de delegate, chamando o método SelectAll, depois que todas as mensagens do formulário são processadas.

        private void mskDataPublicacao_Enter(object sender, EventArgs e)
        {
            this.BeginInvoke((MethodInvoker)delegate()
            {
                this.mskDataPublicacao.SelectAll();
            });
        }
A segunda forma é chamando o método Focus() antes do método SelectAll().

        private void mskDataPublicacao_Enter(object sender, EventArgs e)
        {
            this.mskDataPublicacao.Focus();
            this.mskDataPublicacao.SelectAll();
        }