Professional Documents
Culture Documents
Busca
Revistas
easy .net Magazine #7
:: Acessibilidade
Ir para contedo principal: A LT + 1
Artigos
C#: Mscaras Dinmicas para textBox com qualquer tipo numrico (CEP , CPF, CNPJ, MOEDA , DATA)
Por: Jorge Armando Andrade e C orra [Entre em contato com o autor ]
Ba charel em Sistem a s de Info rm ao pe lo C entro Universitrio do pla nalto de Arax em dezem bro de 2007. Ex peri ncia co m o analista de supo rte e no desenvolvim e nto C #.ne t. Intro duo ao IDE do Visual Studio
:: Participe
Publique um artigo Publique uma oportunidade Publique uma notcia Publique um evento Publique um curso
:: Informativo
Receba nossos informativos por email. E-mail:
C#: Mscaras Dinmicas para textBox com qualquer tipo numrico (CEP , CPF, CNPJ, MOEDA , DATA)
Publicado em: 22/04/2008 C ompartilhe
ASP.NET MVC 3
Visando facilitar a vida de quem trabalha com desenvolvimento criei este artigo descrevendo passo-a-passo e elucidando atravs de cdigo fonte uma maneira dinmica e eficaz de aplicar mscaras a contedos numricos de qualquer tipo em um texBox, utilizando C# (C Sharp). Mscara, neste caso em questo, um recurso de interface utilizado para assemelhar determinada informao(neste exemplo, numrica), visvel no sistema, a maneira como estamos acostumados a manipul-la na vida real.
Publicidade
:: Oportunidades
Cadastrar oportunidades Gerenciar suas oportunidades Cadastrar nova empresa
Por exemplo, ao ver o nmero "00000000" inicialmente no podemos atribuir nenhuma informao caracterstica adicional a ele, fora o fato de se constituir de uma cadeia numrica. Aplicando uma mscara, atravs da interface visual do sistema teremos "00000-000", o que pode nos levar a deduzir que este nmero se trata de um CEP. Este recurso muito importante na preveno de erros por parte do usurio assegurando ao mesmo a no necessidade de digitao de determinados dgitos que possam gerar equvocos durante a insero dos dados no sistema. Visando dinamizar este processo de "mascarar" um dado numrico em tempo real criei uma funo principal que capaz de adicionar uma mascara de qualquer tipo (CEP, CPF, CNPJ), o que pode facilitar a vida de alguns desenvolvedores, que como eu, inicialmente encontraram poucas referncias a respeito. Mas por que no usar um MaskedTextBox? Eu considero o MakedTextBox um tipo de textBox meio "engessado", com algumas limitaes, e para o meu caso em questo achei mais eficiente a criao deste cdigo fonte para manipulao do textBox. Seguem abaixo algumas caractersticas do resultado expresso pelo cdigo que ser descrito: - a insero dos nmeros ocorre da direita para a esquerda. Sendo assim num campo do tipo moeda (0,00) a insero de seguidos "2" transcorreria da seguinte maneira:
:: Especiais
Bsico de C++
C++ Builder Curso A SP.NET 3.5 em VB.NET e C# Guia Prtico de HTML Testes com Visual Studio Team System 2008
:: Desenvolvimento
A ctionScript A DO.NET A SP A SP.NET A utomao Comercial C#
www.linhadecodigo.com.br/Artigo.asp
1/7
27/01/2011
C/C++ Coldfusion CSS Delphi Disp. Mveis HTML Java Javascript LSL (Second Life) Modelagem PHP Python Sharepoint Silverlight SQL VBA (Office) Visual Basic Visual Basic .NET Visual Fox Pro WCF/WPF Web Services XML
Luiz Felipe de Freitas Alessandro de Oliveira Faria Alfred Reinold Baudisch Mauricio Junior Robert Martim Ramon Dures Eric C M Oliveira
:: Infra
BizTalk Server CRM Exchange Server ForeFront / A ntigen / IA G Interoperabilidade ISA Server Linux MOF MS Dynamics CRM Network OCS / LCS Outlook Powershell e Scripts Redes Segurana System Center e Gerenciamento Virtualizao Windows Windows Server
No evento KeyPress inicialmente chama-se uma funo atribuiMascara, que responsvel por chamar a classe mascara instanciada. Passo4: Este passo a codificao da classe mascara. O cdigo fonte e alguns comentrios seguem.
class classeMascaraJa { //ATRIBUTOS-------private char tecla; private string palavra; private Int32 fator = 1; //METODOS PRIVATE-private void retiraCaractere(char carac) { //retirando caractere da string string[] campos = palavra.Split(carac); palavra = Convert.ToDouble(string.Concat(campos)).ToString(); } private void acrescentaZeros(int normal, int backspace) { //acrescentado zeros a string while ((palavra.Length < normal) || ((palavra.Length < backspace) && (tecla == (char)Keys.Back))) { palavra = "0" + palavra; } } private void retornaFator() { //compara se backspace if (tecla == (char)Keys.Back) fator = 3; } public void limpaNumero(char simbolo, int min, int max) { //chama funcao para retirada de caracter e insercao de zeros retiraCaractere(simbolo);
:: Banco de Dados
A ccess Cach Firebird Interbase MySQL Oracle
www.linhadecodigo.com.br/Artigo.asp
2/7
27/01/2011
SQL Server Sybase
:: Gerncia
A rquitetura Ciclo de Vida de Desenvolvimento Controle de Verso Estimativas Metodologias MOF Qualidade e Testes
:: Design
Corel Flash Photopaint Photoshop
Passo 5: No h passo 5! Este todo codigo que ser preciso para converter tanto CEP quanto CNPJ para suas devidas mscaras. Se analisarem vero que o codigo simples e totalmente reutilizvel. A operao principal para conversao de um tipo numero se encontra dentro de dois mtodos: um public e um private. No caso do CNPJ por exemplo:
public string mascaraCNPJ() { string[] camposAux; palavra = string.Concat(camposAux = palavra.Split('/')); limpaNumero('-', 13, 15); string[,] partes = { { "0", "8", "/" }, { "8", "4", "-" }, { "12", Convert.ToString(1 * fator), "" } }; mascaraQualquer(3, partes); return palavra; }}
Extraimos previamente o caractere /. Em seguinda efetuamos a limpeza do numero com relao ao caractere (Obs: no caso do CEP no preciso uma estracao previa pois s h um tipo de caractere (-). Em datas, por exemplo, tambem somente seria necessrio extrair o / usando o metodo limpaNumero()). Os Nmeros que seguem o caractere so 13 que corresponde ao valor mnimo de caracteres(somente numeros) menos 1, e 15 ao valor mximo de caracteres + 1. No caso de data, CEP, CNPJ, o numero mximo e mnimo so o mesmo, mas no caso de um
www.linhadecodigo.com.br/Artigo.asp
3/7
27/01/2011
Curtir
Compartilhe
Classificaes(16)
Classificao mdia:
Muito bom ..rs aline vivoneb onani 1/26 muito bom.. Jose Feliciano 1/5 Muito bom Andrey, Tenho um problema com o Assembly, o sistema no consegue encontrar o arquivo, tem... Mais Coladela 12/29 Parabns. Jacson 12/15
Topo
www.linhadecodigo.com.br/Artigo.asp
4/7
27/01/2011
Para dvidas tcnicas, NO UTILIZE ESTE ESPAO, utilize nosso frum de discusso. http://linhadecodigo.com.br/cs2/forum
O l m uito interessante e ssa m a neira de m ascara no cam po tex tbo x , se r que po deria m e a judar, esta va tenta ndo fa zer um a para digita o de e ndereo IP m ais no estou tendo sucesso ou no consigo digitar corretam ente, pois o cursor sem pre pe rm ane ce no ultim o cam po ou d erro quando o m todo m a sca raQ ualquer e x ecutado po is falta um par m e tro do array O cdigo que estou im ple m e nta do nessa classe que foi pa ssada po r voc //aplica a m a sca ra no form ato 000.000.0.000 public string m ascaraIP() { string[] cam posAux ; pa la vra = string.C onca t(cam po sAux = palavra .Split('.')); lim paNum ero('.', 10, 13); string[,] parte s = { { "0", "3", "." }, { "3", "3", "." }, {"6","1","."},{ "7", C onvert.T oString(1 * fator), "" } }; m ascara Q ua lquer(4, partes); return palavra ; } Po deria m e a judar com o m onta r essa m asca ra e o m todo m a sca raQ ualquer. O briga do! Quem enviou: Marcos Araujo Postado em: 28/01/2010 00:00:00 C aro, Ve rificando os eventos pa ra o tex tbox , nao encontrei o evento O nC lick e nem o Keypress. C om o isso ? Abraco s Quem enviou: Neto Postado em: 14/01/2010 00:00:00 Bo a Noite Jorge Arm ando Andrade e C orra, este ex em plo foi m uit util. obrigado Quem enviou: Ande rson Postado em: 13/01/2010 00:00:00 O l , gostei m uito do a rtigo e esto u querendo usar, m as co m igo apare ceu um problem a, esto u usando o VS 2008 co m linguagem C # e criando um a aplica o Winsows Form , quero usar a m ascara pa ra CP F, s que quando criei a classeMa scaraJa ele acusou erro no Keys.Back (The Na m e 'Keys' doe s not ex ist in the current contex t). se a lgum puder m e ajuda r ficare i agrade cido. Quem enviou: Andr Luiz Postado em: 30/10/2009 00:00:00 Se i q j tem po q esse a rtigo ex iste, porm esto u precisando de um a ajuda . N o e stou conseguindo form a r um a m scara pa ra 4 dgitos, ex em plo: 0000 Ja m ex i pra la e pra ca e nada . Se algum puder ajudar, agradeo m uito. Quem enviou: Wivison Postado em: 16/07/2009 00:00:00 Se i que j tem m ais de um ano que escre veu este artigo , m ais m e ajudou m uito . Fico gra to.
www.linhadecodigo.com.br/Artigo.asp
5/7
27/01/2011
Produtos relacionados
Ainda no existem produtos relacionados.
Topo
Topo
Artigos relacionados
Montando estrutura de um site MVC 2 com Visual Studio .NET 2010 - Parte 2 Montando estrutura de um site MVC com Visual Studio 2010 Monitorando Arquivos e Diretrios com FileSystemWatcher Trabalhando com Linq To XML parte 2: Linq vS Lambda Expression C riando arquivo XML com Linq To XML Trabalhando com cache em propriedades C oncatenao de Strings Trabalhando com C LR: Stored Procedure Segundo Passo C omponente TreeView C # C riando um Windows Service C riptografando dados com C # Monitorando o consumo de memria e tempo de execuo Salvando em XML Melhorando WinApps seguindo WebApps C adastro de um C onsultrio em Windows Forms, com C # e SQL Server Parte 12 C riar arquivo de integrao com Integration Services Trabalhando com Array Params no C # Pegando o horrio inicial e final do uso do Windows usando C # C omo funcionam as Arrays (Matrizes) Multidimensionais no C #? C adastro de um C onsultrio em Windows Forms, com C # e SQL Server Parte 11 Documentao de C digo .Net ASP.NET MVC C ustom Helpers Eval em C # com IronRuby Trabalhando com C LR: Stored Procedure Primeiro passo Entendendo interfaces com C # Executar aplicaes em background com Agendador de Tarefas Windows ExpandoObject: dinamismo no .NET 4.0 Integrao C # + Ruby Utilizando um Tipo T como parmetro e recuperando seus valores Detectando mudanas em objetos
Topo
www.linhadecodigo.com.br/Artigo.asp
6/7
27/01/2011
Share Page
Recent Activity
Recommended
Like
Digg This
Stumble It!
www.linhadecodigo.com.br/Artigo.asp
7/7