private void txtValor_PreviewTextInput(object sender, TextCompositionEventArgs e) { if (!string.IsNullOrEmpty(MascaraDeCaptura)) { int inputMascaraLength = MascaraDeCaptura.Count(c => c.Equals('@')); int inputLength = RemoveCaracteresNaoAceitos(RemoveMascaraDeCaptura(txtValor.Text)).Length; if (inputLength >= inputMascaraLength) { e.Handled = true; return; } } e.Handled = !PermitidoInput(e.Text); }
private string FormataInput(string texto) { texto = RemoveMascaraDeCaptura(texto); texto = RemoveCaracteresNaoAceitos(texto); //Mascara para apresentação do dado enquanto é digitado if (string.IsNullOrEmpty(MascaraDeCaptura)) { //Seta a mascara com o tamanho maximo que é aceito //MascaraDeCaptura = new string('@', TamanhoMaximo); return(texto); } int indice = 0; int length = 0; string textoFormatado = ""; if (IniciaPelaEsquerda) { for (int i = 0; i < MascaraDeCaptura.Length; i++) { char c = MascaraDeCaptura[i]; if (c == '@') { if (texto.Length > indice + length) { length++; if (texto.Length != indice + length) { continue; } } textoFormatado += texto.Substring(indice, length); break; } textoFormatado += string.Format("{0}{1}", texto.Substring(indice, length), c); indice += length; length = 0; } textoFormatado = string.Format("{0}{1}", textoFormatado, MascaraDeCaptura.Substring(textoFormatado.Length, MascaraDeCaptura.Length - textoFormatado.Length)); } else { for (int i = MascaraDeCaptura.Length - 1; i >= 0; i--) { char c = MascaraDeCaptura[i]; if (c == '@') { if (texto.Length > indice + length) { length++; if (texto.Length != indice + length && i > 0) { continue; } } textoFormatado = string.Format("{0}{1}", texto.Substring(texto.Length - indice - length, length), textoFormatado); break; } textoFormatado = string.Format("{0}{1}{2}", c, texto.Substring(texto.Length - indice - length, length), textoFormatado); indice += length; length = 0; } textoFormatado = string.Format("{0}{1}", MascaraDeCaptura.Substring(0, MascaraDeCaptura.Length - textoFormatado.Length), textoFormatado); } textoFormatado = textoFormatado.Replace("@", "."); return(textoFormatado); }