C# - Apresentando e usando o controle MaskedTextBox


 O controle MaskedTextBox permite que apliquemos uma máscara a um controle TextBox definindo um formato para a entrada de dados.

A entrada de dados em um formulário Windows talvez seja a tarefa mais corriqueira que existe, afinal vivemos preenchendo estes benditos formulários a vida inteira.

Neste artigo vamos conhecer o controle MaskedTextBox da linguagem C#.

Recurso usado

O controle MaskedTextBox foi projetado para ajudar o usuário ao preencher um formulário com dados em uma aplicação Windows Forms.

A propriedade Mask do controle recebe uma string que define a máscara de entrada para o controle e usando a esta propriedade você pode especificar critérios sem escrever qualquer lógica de validação personalizada em seu aplicativo tais como:

Esta propriedade permite que você defina uma string que representa o formato exigido para a seqüência de entrada colocado no MaskedTextBox. O valor padrão é uma seqüência vazia, que permite que qualquer entrada.

Quando um controle MaskedTextBox é exibido em tempo de execução, ele representa a máscara como uma série de caracteres de entrada e caracteres literais opcionais.

Cada posição de máscara editáveis, que representa uma entrada obrigatória ou opcional, é mostrada com um único caractere de aviso. Por exemplo, o sinal numérico (#) é geralmente usado como um espaço reservado para uma entrada de caractere numérico. Você pode usar a propriedade para especificar um caractere de prompt personalizado.

Se o usuário informar um caractere incorreto o controle irá emitir um aviso sonoro se a propriedade BeepOnError estiver definida como True e o evento MaskInputRejected será disparado de forma que você poderá personalizar o tratamento da entrada incorreta.

Você pode usar a propriedade MaskFull para verificar se o usuário inseriu todas a entrada necessária;

A propriedade Text sempre irá recuperar a entrada do usuário formatada de acordo com a máscara e a propriedade TextMaskFormat.

Em uma aplicação Windows Forms usando a linguagem C#, ao arrastar o controle a partir da Toolbox e soltá-lo no formulário podemos selecionar a guia MaskedTextBox Tasks e veremos o link Set Mask...

Clicando neste link teremos acesso à janela Input Mask onde poderemos definir o formato da máscara a ser aplicada ao controle.

Temos algumas máscaras pré-definidas e podemos criar uma máscara conforme a nossa necessidade:

A propriedade Mask controla o formato dos dados e a validação dos caracteres dos dados:

Podemos definir a propriedade Mask usando as opções acima ou fazer isso via código :

this.maskedTextBox1.Mask = "00000-9999";
this.maskedTextBox2.Mask = "R$ 999.999,00";
this.maskedTextBox3.Mask = "(999)000-0000";

A propriedade Mask deve ser uma seqüência de caracteres composta de um ou mais elementos, como mostrado na tabela a seguir :

# - Você pode digitar +/- [Opcional]
0 - Digitar zero to 9 [Requerido]
9 - Digitar 0 - 9 [Opcional]
A - Alfanumérico. [Requerido]
a - Alfanumérico. [Opcional]
L - Letras a-z, A-Z [Requerido]
? - Letras a-z, A-Z [Opcional]
C - Qualquer caractere não controlado [Opcional]

O padrão de símbolos decimal (.), milhares (,), tempo (:), data (/), e moeda ($) que serão exibidos são definidos pela localização da aplicação. Você pode forçá-los a mostrar símbolos de outra localização usando a propriedade FormatProvider.

A propriedade FormatProvider determina quais símbolos são usados para a moeda, data e outros espaços reservados da máscara de cultura específica quando ocorre a validação de tipo e o controle tem um valor não nulo para propriedade ValidatingType.

A inserção de caracteres na máscara em tempo de execução é controlada pela propriedade InsertKeyMode. O estado dessa propriedade é definido pela enumeração InsertKeyMode (Default, Insert ou OverWrite) a qual pode estar sempre ativada, desativada ou definido para respeitar a configuração do teclado do usuário.

Exemplo de aplicação Windows Forms usando MaskedTextBox

Abra o VS 2013 Express for Windows desktop e crie um novo projeto usando a linguagem C# e o template Windows Forms Applicaton com o nome MaskedTextBox.

No formulário Windows vamos definir alguns controles MaskedTextBox usando as máscaras mais comumente usadas:

Controles usados: 
  • Label - lblMascaraAtiva
  • MaskedTextBox - mskTextBox
  • btnHora
  • btnCep
  • btnMoeda
  • btnData
  • btnSenha
  • btnTelefone

O código associado ao evento Click de cada um dos botões aplica a máscara ao controle - mskTextBox - e exibe a formatação usada no controle lblMascaraAtiva :

using System;
using System.Windows.Forms;
namespace MaskedTextBox
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void btnHora_Click(object sender, EventArgs e)
        {
            this.mskTextBox.Mask = "00:00";
            this.lblMascaraAtiva.Text = this.mskTextBox.Mask;
            this.mskTextBox.Focus();
        }
        private void btnCep_Click(object sender, EventArgs e)
        {
            this.mskTextBox.Mask = "00000-9999";
            this.lblMascaraAtiva.Text = this.mskTextBox.Mask;
            this.mskTextBox.Focus();
        }
        private void btnMoeda_Click(object sender, EventArgs e)
        {
            this.mskTextBox.Mask = "$ 999,999.00";
            this.lblMascaraAtiva.Text = this.mskTextBox.Mask;
            this.mskTextBox.Focus();
        }
        private void btnData_Click(object sender, EventArgs e)
        {
            this.mskTextBox.Mask = "00/00/0000";
            this.lblMascaraAtiva.Text = this.mskTextBox.Mask;
            this.mskTextBox.Focus();
        }
        private void btnSenha_Click(object sender, EventArgs e)
        {
            // define a mascara para senha
            this.mskTextBox.UseSystemPasswordChar = true;
            this.mskTextBox.Mask = "000000";
            this.lblMascaraAtiva.Text = this.mskTextBox.Mask;
            this.mskTextBox.Focus();
        }
        private void btnTelefone_Click(object sender, EventArgs e)
        {
            this.mskTextBox.Mask = "(999)000-0000";
            this.lblMascaraAtiva.Text = this.mskTextBox.Mask;
            this.mskTextBox.Focus();
        }
    }
}

Naturalmente podemos definir diversas propriedades do controle MaskedTextBox usando a janela de propriedades do controle.   

Pegue o projeto completo aqui: MaskedTextBox.zip

    Mat 7:15 Guardai-vos dos falsos profetas, que vêm a vós disfarçados em ovelhas, mas interiormente são lobos devoradores.

    Mat 7:16 Pelos seus frutos os conhecereis. Colhem-se, porventura, uvas dos espinheiros, ou figos dos abrolhos?

    Mat 7:17 Assim, toda árvore boa produz bons frutos; porém a árvore má produz frutos maus.

 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti