Páginas

Pesquisar neste blog

Mostrando postagens com marcador Windows Forms. Mostrar todas as postagens
Mostrando postagens com marcador Windows Forms. Mostrar todas as postagens

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