FUNCAO - MASCARA VB6 NO VB.NET
Olá, Amigos usava o códig abaixo no vb6 para formatar o campo valor, código aqui do forum mesmo mas no VB.NET não funfa alguem tem uma solução ou outra forma de fazer que possa me ajudar com uma dica.
Public Sub MascMoeda(ByVal Controle As TextBox)
Dim i As Integer
Dim T As String
With Controle
[ô]Armazena o Text, para nao causar o evento change a toa
T = .Text
[ô]Armazena o SelStart da Dir. para Esq., pois o alinhamento é esq.
i = Len(T) - .SelectionStart
[ô]Tira a virgula da variavel T
T = Replace(.Text, [Ô],[Ô], [Ô][Ô])
[ô]Acrescenta zeros
If Len(T) < 3 Then T = String(3 - Len(T), [Ô]0[Ô]) & T [ô]---------------------aqui fica String sublinhado e não funfa de jeito nenhum
[ô]Monta o nr separando as casas
T = Mid(T, 1, Len(T) - 2) & [Ô],[Ô] & Mid(T, Len(T) - 1)
[ô]Formata o nr para tirar os zeros a mais q podem ficar no começo
T = Format(T, [Ô]#0.00[Ô])
[ô]Verifica se o valor do Text é <> da Var. T (para nao travar no evento Change)
If .Text <> T Then .Text = T
[ô]Como mudou o valor do TextBox, tem q voltar o SelStart ao q era antes
.SelectionStart = Len(T) - i
End With
End Sub
formatNumber(cdec(txt_Valor.text),2)
Use isto.
Use isto.
Amigo, GUIMORAES123 Obrigado pela força.
Na verdade a função acima tem como objetivo o usuário ir digitando e o text ir se ajustando igual a caixa de banco, eu particulamente não gosto, mas como no sistema antigo tinha muitos usuários se adequaram a esta forma ai já sabe né.
Na verdade a função acima tem como objetivo o usuário ir digitando e o text ir se ajustando igual a caixa de banco, eu particulamente não gosto, mas como no sistema antigo tinha muitos usuários se adequaram a esta forma ai já sabe né.
A função String(tamanho, caracter) do VB6 virou StrDup(tamanho, caracter) no VB.Net
Olha o que eu uso
Private Sub formataMonetario(ByVal sender As System.Object, ByVal e As Windows.Forms.KeyPressEventArgs)
e.Handled = True
Dim tempTXT As TextBox = CType(sender, TextBox)
If e.KeyChar = Chr(Keys.Delete) Then
End If
If e.KeyChar = Chr(Keys.Back) Then
If tempTXT.Tag IsNot Nothing Then
If Not tempTXT.Tag.ToString.Length <= 1 Then
tempTXT.Tag = tempTXT.Tag.ToString.Substring(0, tempTXT.Tag.ToString.Length - 1)
Else
tempTXT.Tag = [Ô][Ô]
tempTXT.Text = [Ô]0,00[Ô]
Exit Sub
End If
End If
Else
If Not Char.IsNumber(e.KeyChar) Then Exit Sub
End If
If Not e.KeyChar = Chr(Keys.Back) Then tempTXT.Tag &= e.KeyChar
tempTXT.Text = Math.Round(Decimal.Parse(tempTXT.Tag.ToString) / 100, 2).ToString
tempTXT.Text = FormatNumber(tempTXT.Text, 2)
tempTXT.SelectionLength = 0
End Sub
Ai chamo o metodo no evento keypress do textBox
formataMonetario(sender, e)
você deve deixar o textbox como ReadOnly = true
Abraços
Private Sub formataMonetario(ByVal sender As System.Object, ByVal e As Windows.Forms.KeyPressEventArgs)
e.Handled = True
Dim tempTXT As TextBox = CType(sender, TextBox)
If e.KeyChar = Chr(Keys.Delete) Then
End If
If e.KeyChar = Chr(Keys.Back) Then
If tempTXT.Tag IsNot Nothing Then
If Not tempTXT.Tag.ToString.Length <= 1 Then
tempTXT.Tag = tempTXT.Tag.ToString.Substring(0, tempTXT.Tag.ToString.Length - 1)
Else
tempTXT.Tag = [Ô][Ô]
tempTXT.Text = [Ô]0,00[Ô]
Exit Sub
End If
End If
Else
If Not Char.IsNumber(e.KeyChar) Then Exit Sub
End If
If Not e.KeyChar = Chr(Keys.Back) Then tempTXT.Tag &= e.KeyChar
tempTXT.Text = Math.Round(Decimal.Parse(tempTXT.Tag.ToString) / 100, 2).ToString
tempTXT.Text = FormatNumber(tempTXT.Text, 2)
tempTXT.SelectionLength = 0
End Sub
Ai chamo o metodo no evento keypress do textBox
formataMonetario(sender, e)
você deve deixar o textbox como ReadOnly = true
Abraços
Veja se te ajuda.
http://sites.google.com/site/programacaoonline/family-blog/vb-net/textbox-com-mascara-moeda-em-vb-net
http://sites.google.com/site/programacaoonline/family-blog/vb-net/textbox-com-mascara-moeda-em-vb-net
Amigos, muito Obrigado pela apoio e sugestões, o resposta do amigo tecla foi a mais condizente com minha solicitação agradeço a todos.
Tópico encerrado , respostas não são mais permitidas