FORMATA?ÃO DE VALORES NA CAIXA TEXTBOX

ELMO01 10/12/2015 10:49:54
#454952
Oi pessoal,

Como faço para formatar valores em uma caixa do textbox, gostaria que esta formação se faça quando eu estou digitando o valor, por exemplo:

tenho uma caixa textbox com o valor 0,00, ao digitar o valor, a caixa vai formatando o mesmo, ou seja, se digitar 2 ficaria 2,00 e se eu pressionar a virgual [Ô],[Ô] passaria a preencher os centavos.

Se alguém tiver uma função já pronta e se me pudesse passar ficaria agradecido, pois o meu tempo está curto para entregar o sistema.

Obrigado,
PERCIFILHO 10/12/2015 10:53:24
#454953
Tenho uma função bem legal para formatar valores moeda na TextBox. Está em C#, mas você pode converter para VBNet facilmente.
Coloque em um módulo;

        // função para formatar TextBox com Valor Moeda
public static void ValorMoeda(TextBox controle)
{
String n = String.Empty;
Double v= 0;
n = controle.Text.Replace([Ô],[Ô], [Ô][Ô]).Replace([Ô].[Ô], [Ô][Ô]);
if (n.Equals([Ô][Ô]))
{
n = [Ô]000[Ô];
}
n = n.PadLeft(3,(char)[ô]0[ô]);
if (n.Length > 3 && n.Substring(0, 1) == [Ô]0[Ô])
{
n = n.Substring(1, n.Length - 1);
}
v = Convert.ToDouble(n) / 100;
controle.Text = String.Format([Ô]{0:N}[Ô], v);
controle.SelectionStart = controle.Text.Length;
}


Depois, no evento TextChange, do TextBox, coloque

Gerais.ValorMoeda(txt1a3);


Espero ter ajudado.
PERCIFILHO 10/12/2015 12:06:07
#454959
usei o site para conversão de c# para vb.net - http://www.carlosag.net/tools/codetranslator/ , e o resultado foi esse.

     Public Shared Sub ValorMoeda(ByVal controle As TextBox)
Dim n As String = String.Empty
Dim v As Double = 0
n = controle.Text.Replace([Ô],[Ô], [Ô][Ô]).Replace([Ô].[Ô], [Ô][Ô])
If n.Equals([Ô][Ô]) Then
n = [Ô]000[Ô]
End If

n = n.PadLeft(3, CType(Microsoft.VisualBasic.ChrW(48),Char))
If ((n.Length > 3) _
AndAlso (n.Substring(0, 1) = [Ô]0[Ô])) Then
n = n.Substring(1, (n.Length - 1))
End If

v = (Convert.ToDouble(n) / 100)
controle.Text = String.Format([Ô]{0:N}[Ô], v)
controle.SelectionStart = controle.Text.Length
End Sub


Teste para ver se funciona, qualquer coisa, diz aí.
ELMO01 10/12/2015 17:32:30
#454997
PERCIFILHO, tentei colocar a funcção que você me enviou mas não deu certo, tem mais alguma idéia??

Obrigado
XLEGENDARY 10/12/2015 18:33:04
#455006
Public Shared Sub TextBoxMoeda(ByRef txt As TextBox)
Dim n As String = String.Empty
Dim v As Double = 0
Try
n = txt.Text.Replace([Ô],[Ô], [Ô][Ô]).Replace([Ô].[Ô], [Ô][Ô])
If n.Equals([Ô][Ô]) Then n = [Ô]000[Ô]
n = n.PadLeft(3, [Ô]0[Ô])
If n.Length > 3 And n.Substring(0, 1) = [Ô]0[Ô] Then n = n.Substring(1, n.Length - 1)
v = Convert.ToDouble(n) / 100
txt.Text = String.Format([Ô]{0:N}[Ô], v)
txt.SelectionStart = txt.Text.Length
Catch ex As Exception
MessageBox.Show(ex.Message, [Ô]TextBoxMoeda[Ô])
End Try
End Sub

no textchange do seu textbox poe

Utils.TextBoxMoeda(SeuTextBox)
PEGUDO 11/12/2015 14:36:11
#455030
Resposta escolhida
Cara,
Baixa esta dll que eu fiz.

1º - Baixa o zip e copie a dll para a pasta Debug do seu projeto;
2º - Adicione uma referência a ela, no seu projeto: Menu Project / Add Referencies;
3º - Clique no botão Browser, vá até a pasta onde você salvou a dll e clique duas vezes nela.

Depois você pode criar um código, tipo este exemplo aí de baixo:

[txt-color=#0000f0]Private Sub[/txt-color] TextBox1_KeyUp(sender As Object, e As EventArgs) Handles TextBox1.KeyUp
[txt-color=#0000f0]Using[/txt-color] formata [txt-color=#0000f0]As New[/txt-color] formataNumeros.formataNumeros(Me.TextBox1.Text.Trim)
Me.TextBox1.Text = formata.pegaNumero
Me.TextBox1.SelectionStart = 10000000
[txt-color=#0000f0] End Using
End Sub[/txt-color]


IMPORTANTE: Eu aconselho a usar a propriedade KeyUp do TextBox. Masmo porque eu não testei na propriedade Textchanged ou KeyPress

Depois é só digitar como se fosse um caixa eletrônico, lembrando que o cursor sempre vai pro final da TextBox depois de cada digitação com SelectionStart = 10000000.

Espero ter ajudado.
ELMO01 11/12/2015 16:47:12
#455037
PEGUDO, você esqueceu de colocar a DLL no post
ELMO01 11/12/2015 17:12:00
#455038
Pessoal, ou eu estou muito burro ou não estou sabendo colocar a função no meu sistema, pois está dando erro.

Veja como estou fazendo:

Private Sub Txt_ValCon_TextChanged(sender As System.Object, e As System.EventArgs) Handles Txt_ValCon.TextChanged
Me.Txt_ValCon.Text = TextBoxMoeda(Me.Txt_ValCon.Text)
End Sub

mas me retorna a seguinte mensagem:

Erro 2 [ô]TextBoxMoeda[ô] não está declarado. Ele pode ser inacessível devido ao seu nível de proteção.

o que estou fazendo de errado ai pessoal


ELMO01 11/12/2015 17:26:14
#455039
é pessoal acho que sou eu que estou ficando burro mesmo, consegui, agradeço a todos pela força
Tópico encerrado , respostas não são mais permitidas