Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alexandremanowar

Máscara

Recommended Posts

Olá pessoal

 

Eu gostaria de saber como fazer com que um TextBox fique com uma máscara de entrada tipo assim para digitar data o TextBox faça a divisão automática dessa forma 99/99/9999 ou seja o usuário vai digitando e o espaço entre as barras vão sendo preenchidos, ou vou digitar um cep e a divisão já esteja lá automáticamente.

Como eu posso fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso esse método:

 /// <summary>  /// formata um valor sobre uma mascara  /// </summary>  /// <param name="valor">valor a formatar</param>  /// <param name="mascara">no formato ex.:##/##/#### ou ##.###,##</param>  /// <returns>valor formatado</returns>  public static string Formatar( string valor, string mascara )   {  	StringBuilder dado = new StringBuilder();  	  	// remove caracteres nao numericos  	foreach ( char c in valor )   	{    if ( Char.IsNumber(c) )    	dado.Append(c);  	}  	int indMascara = mascara.Length;  	int indCampo = dado.Length;  	for (; indCampo > 0 && indMascara > 0;  )  	{    if ( mascara[--indMascara] == '#' )    	indCampo--;  	}  	StringBuilder saida = new StringBuilder();  	for (; indMascara < mascara.Length; indMascara++)   	{        saida.Append( ( mascara[indMascara] == '#' ) ? dado[indCampo++] : mascara[indMascara] );  	}	  	return saida.ToString();  }

private void seuTxt_TextChanged(object sender, System.EventArgs e)  { 	 this.seuTxt.Text = Utilidades.Formatar(this.seuTxt.Text,"###.###.###-##"); 	 this.seuTxt.SelectionStart = this.seuTxt.Text.Length;  }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara não consegui entender esse primeiro código, coloquei ele dentro do formulário mas não está dando certo. Onde Exatamente eu devo colocar ele para funcionor?O segundo código acredito eu que basta fazer as modificações e colocar direto no formulário onde está o TextBox.Será que teria como você me mandar um tutorial ou algo que me eu possa ler para aprender a fazer isso?Você pode me dar essa força?

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, está em C# esse código, você pode colocar diretamente no seu form... mas você terá q converter para VB.NET

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara quebrei o coco aqui tentei converter isso para vb.net mas não consegui está dando várias mensagens de erro olha como eu alterei:

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    public static string Formatar( string valor, string mascara )         StringBuilder(dado = New StringBuilder)        ''// remove caracteres nao numericos  foreach ( char c in valor )         If (Char.IsNumber(c)) Then    dado.Append(c);        End If        Int(indMascara = mascara.Length)        Int(indCampo = dado.Length)  for  indCampo > 0 && indMascara > 0   if  mascara[--indMascara] == '#'    indCampo--            End If            StringBuilder(saida = New StringBuilder)  for  indMascara < mascara.Length; indMascara++   saida.Append( ( mascara[indMascara] == '#' ) ? dado[indCampo++] : mascara[indMascara] );  return saida.ToString();    End SubEnd Class

Deixa eu te incomodar mais um pouco

Cara onde estão meus erros?

Você pode corrigir para mim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui fazer em C# mesmo, só que tive que inserir uns System da vida, e não sei porque tive que fazer isso, alguém pode explicar?

 

 

[/code] /// <summary>

/// formata um valor sobre uma mascara

/// </summary>

/// <param name="valor">valor a formatar</param>

/// <param name="mascara">no formato ex.:##/##/#### ou ##.###,##</param>

/// <returns>valor formatado</returns>

public static string Formatar( string valor, string mascara )

{

System.Text.StringBuilder dado = new System.Text.StringBuilder();

// remove caracteres nao numericos

foreach ( char c in valor )

{

if ( Char.IsNumber© )

dado.Append©;

}

int indMascara = mascara.Length;

int indCampo = dado.Length;

for (; indCampo > 0 && indMascara > 0; )

{

if ( mascara[--indMascara] == '#' )

indCampo--;

}

System.Text.StringBuilder saida = new System.Text.StringBuilder();

for (; indMascara < mascara.Length; indMascara++)

{

saida.Append( ( mascara[indMascara] == '#' ) ? dado[indCampo++] : mascara[indMascara] );

}

return saida.ToString();

}




			
		

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara já tentei converter de tudo que é jeito e ainda não consegui, olha como eu fiz:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        ' <summary>        ' formata um valor sobre uma mascara        ' </summary>        ' <param name="valor">valor a formatar</param>        ' <param name="mascara">no formato ex.:##/##/#### ou ##.###,##</param>        ' <returns>valor formatado</returns>    Public Shared Function Formatar(ByVal valor As String, ByVal mascara As String) As String        Dim dado As System.Text.StringBuilder = New System.Text.StringBuilder        ' remove caracteres nao numericos        For Each c As Char In valor            If Char.IsNumber Then                dado.Append()            End If        Next        Dim indMascara As Integer = mascara.Length        Dim indCampo As Integer = dado.Length        Do While ((indCampo > 0) _                    AndAlso (indMascara > 0))            If (mascara(--, indMascara) = Microsoft.VisualBasic.ChrW(35)) Then                indCampo = (indCampo - 1)            End If        Loop        Dim saida As System.Text.StringBuilder = New System.Text.StringBuilder        Do While (indMascara < mascara.Length)            saida.Append((mascara(indMascara) = Microsoft.VisualBasic.ChrW(35)))            'TODO: Warning!!!, inline IF is not supported ?            indMascara = (indMascara + 1)        Loop        Return saida.ToString    End Function    End SubEnd Class

Alguém pode me ajudar arrumar?

Onde está o erro? Preciso aprender

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.