Inquiridor
Mascara dinâmica para placa - C#

Discussão Geral
-
Bom dia pessoal,
Gostaria de saber se vocês poderia me ajudar a criar uma máscara dinâmica em C# para receber o valor de uma placa de veículo por exemplo WWW-9999 no caso eu faço a criação das minhas máscara conforme esse exemplo Exemplo (Créditos Wagner Braz Rodrigues) ao qual eu realizei apenas algumas alterações para usar em campos como telefone e celular. Daí gostaria de saber se eu consigo fazer uma máscara do gênero usando essa ideia. Segue um exemplo do uso da máscara de CPF.
//Criado do Wagner Braz Rodrigues //Data 23/09/2010 private void AjustaMascaraCPF() { int cont = 0; int cursorPos = SelectionStart; foreach (Char c in Text) { if (((cont == 3) || (cont == 7)) && (c != '.') && (Text.Length >= cont)) { Text = Text.Insert(cont,"."); SelectionStart = cursorPos + 1; } if ( (c == '.') && (Text.Length >= cont) && (cont != 3) && (cont != 7) ) { Text = Text.Remove(cont,1); SelectionStart = cursorPos; } if ( (cont == 11) && (c != '-') && (Text.Length >= cont)) { Text = Text.Insert(11, "-"); SelectionStart = cursorPos + 1; } if ((c == '-') && (cont != 11) && (Text.Length >= cont)) { Text = Text.Remove(cont,1); SelectionStart = cursorPos; } cont++; } }
private void textBox1_KeyUp(object sender, KeyEventArgs e) { AjustaMascaraCPF(); } //Aceitar apenas números no caso do CPF private void textBox1_KeyPress(object sender, KeyEventArgs e) { if ((!Char.IsDigit(e.KeyChar)) && (e.KeyChar != '\x0008')) { e.KeyChar = '\x0000'; } }
- Tipo Alterado Marcos SJ sexta-feira, 4 de dezembro de 2015 14:23 Todas as threads de "How to" serão movidas para discussão geral
Todas as Respostas
-
-
-
Então se fosse o MaskedTextBox acho que daria para resolver somente adicionando a mascara "LLL-0000";
Deste jeito que tu quer fazer, acredito que o algoritmo seria algo como:
Terá que validar se os primeiros três dígitos são caracteres alfanuméricos (a-z), depois adicionar o hífen e posteriormente deixar adicionar somente números; Correto?
Se for isso, me avisa que eu escrevo um exemplo em C# utilizando regex
Microsoft Innovation Center - Mic - Curitba
-
-
Voce precisa verificar os 3 primeiros char permitindo somente letras, verificar se o 4° char não for '-' incluir '-', apos isso permitir apenas numeros e bloquear após = 8° char. Adapte o ex. abaixo conforme nescessario.
private void textBox2_KeyPress(object sender, KeyPressEventArgs e) { int cursorPos = textBox2.SelectionStart; if (Char.IsLetterOrDigit(e.KeyChar) || e.KeyChar == '-') { if (cursorPos < 3 && !Char.IsLetter(e.KeyChar)) { e.Handled = true; } else if (cursorPos == 3 && e.KeyChar != '-') { textBox2.Text = textBox2.Text.Insert(cursorPos, "-"); textBox2.SelectionStart = cursorPos + 1; if (!Char.IsDigit(e.KeyChar)) { e.Handled = true; } } else if (cursorPos > 3 && !Char.IsDigit(e.KeyChar)) { e.Handled = true; } else if (cursorPos == 8) { e.Handled = true; } } }
-