Jump to content

Como fazer uma TextBox associada a uma variável do tipo Decimal aceitar qualquer dígito ao clicar num botão.


Brunosob09
Go to solution Solved by Cerzedelo,

Recommended Posts

Olá a todos! Sou novo neste fórum, por isso peço desculpa se cometer algum erro ao colocar a minha dúvida. 

Estou a fazer um programa que consiste numa máquina de vendas. Para a pessoa conseguir "introduzir dinheiro na máquina", necessita de digitar numa TextBox o valor que deseja introduzir e, depois, clicar num botão para que "o pagamento seja efetuado" e seja apresentada a "fatura". No entanto, a TextBox está associada a uma variável do tipo Decimal e se a pessoa digitar uma letra ou qualquer outro dígito que não seja numérico e, de seguida, clicar no botão, o programa dá erro. O que queria fazer é que, quando a pessoa digitasse uma letra ou outro dígito não numérico, o meu programa apresentasse uma mensagem numa Label a dizer "Quantia inválida!". Para além disso, queria que o programa aceitasse valores décimais com pontos e não somente com vírgulas. Não estou a conseguir fazer nada disso e já procurei na Internet, mas não estou a achar exatamente o que eu quero. 

Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
        Dim trocoA, trocoC, quantia, trocoB, trocoS, preçoA, preçoC, preçoB, preçoS As Decimal



        preçoA = 0.2
        preçoC = 1.0
        preçoB = 0.8
        preçoS = 0.9
        trocoA = quantia - preçoA
        trocoC = quantia - preçoC
        trocoB = quantia - preçoB
        trocoS = quantia - preçoS

        If Label1.Text = "Produto: Água 500 ml" & vbNewLine & "Preço: 0.20€" And quantia >= preçoA Then
            Label1.Text = "Produto: Água 500 ml" & vbNewLine & "Valor a pagar: 0.20€" & vbNewLine & "Valor inserido:" & quantia & "€" & vbNewLine & "Troco:" & trocoA & "€" & vbNewLine & "Compra efetuada com sucesso!"
        ElseIf Label1.Text = "Produto: Água 500 ml" & vbNewLine & "Preço: 0.20€" And quantia < preçoA Then
            Label1.Text = "Quantia insuficiente!"
        ElseIf Label1.Text = "Produto: Chocolate" & vbNewLine & "Preço: 1.00€" And quantia >= preçoC Then
            Label1.Text = "Produto: Chocolate" & vbNewLine & "Valor a pagar: 1.00€" & vbNewLine & "Valor inserido:" & quantia & "€" & vbNewLine & "Troco:" & trocoC & "€" & vbNewLine & "Compra efetuada com sucesso!"
        ElseIf Label1.Text = "Produto: Chocolate" & vbNewLine & "Preço: 1.00€" And quantia < preçoC Then
            Label1.Text = "Quantia insuficiente!"
        ElseIf Label1.Text = "Produto: Bolachas" & vbNewLine & "Preço: 0.80€" And quantia >= preçoB Then
            Label1.Text = "Produto: Bolachas" & vbNewLine & "Valor a pagar: 0.80€" & vbNewLine & "Valor inserido:" & quantia & "€" & vbNewLine & "Troco:" & trocoB & "€" & vbNewLine & "Compra efetuada com sucesso!"
        ElseIf Label1.Text = "Produto: Bolachas" & vbNewLine & "Preço: 0.80€" And quantia < preçoB Then
            Label1.Text = "Quantia insuficiente!"
        ElseIf Label1.Text = "Produto: Sumo" & vbNewLine & "Preço: 0.90€" And quantia >= preçoS Then
            Label1.Text = "Produto: Sumo" & vbNewLine & "Valor a pagar: 0.90€" & vbNewLine & "Valor inserido:" & quantia & "€" & vbNewLine & "Troco:" & trocoS & "€" & vbNewLine & "Compra efetuada com sucesso!"
        ElseIf Label1.Text = "Produto: Sumo" & vbNewLine & "Preço: 0.90€" And quantia < preçoS Then
            Label1.Text = "Quantia insuficiente!"


        End If

 

Link to comment
Share on other sites

  • Solution
36 minutos atrás, Brunosob09 disse:

Olá a todos! Sou novo neste fórum, por isso peço desculpa se cometer algum erro ao colocar a minha dúvida. 

Estou a fazer um programa que consiste numa máquina de vendas. Para a pessoa conseguir "introduzir dinheiro na máquina", necessita de digitar numa TextBox o valor que deseja introduzir e, depois, clicar num botão para que "o pagamento seja efetuado" e seja apresentada a "fatura". No entanto, a TextBox está associada a uma variável do tipo Decimal e se a pessoa digitar uma letra ou qualquer outro dígito que não seja numérico e, de seguida, clicar no botão, o programa dá erro. O que queria fazer é que, quando a pessoa digitasse uma letra ou outro dígito não numérico, o meu programa apresentasse uma mensagem numa Label a dizer "Quantia inválida!". Para além disso, queria que o programa aceitasse valores décimais com pontos e não somente com vírgulas. Não estou a conseguir fazer nada disso e já procurei na Internet, mas não estou a achar exatamente o que eu quero. 


Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
        Dim trocoA, trocoC, quantia, trocoB, trocoS, preçoA, preçoC, preçoB, preçoS As Decimal



        preçoA = 0.2
        preçoC = 1.0
        preçoB = 0.8
        preçoS = 0.9
        trocoA = quantia - preçoA
        trocoC = quantia - preçoC
        trocoB = quantia - preçoB
        trocoS = quantia - preçoS

        If Label1.Text = "Produto: Água 500 ml" & vbNewLine & "Preço: 0.20€" And quantia >= preçoA Then
            Label1.Text = "Produto: Água 500 ml" & vbNewLine & "Valor a pagar: 0.20€" & vbNewLine & "Valor inserido:" & quantia & "€" & vbNewLine & "Troco:" & trocoA & "€" & vbNewLine & "Compra efetuada com sucesso!"
        ElseIf Label1.Text = "Produto: Água 500 ml" & vbNewLine & "Preço: 0.20€" And quantia < preçoA Then
            Label1.Text = "Quantia insuficiente!"
        ElseIf Label1.Text = "Produto: Chocolate" & vbNewLine & "Preço: 1.00€" And quantia >= preçoC Then
            Label1.Text = "Produto: Chocolate" & vbNewLine & "Valor a pagar: 1.00€" & vbNewLine & "Valor inserido:" & quantia & "€" & vbNewLine & "Troco:" & trocoC & "€" & vbNewLine & "Compra efetuada com sucesso!"
        ElseIf Label1.Text = "Produto: Chocolate" & vbNewLine & "Preço: 1.00€" And quantia < preçoC Then
            Label1.Text = "Quantia insuficiente!"
        ElseIf Label1.Text = "Produto: Bolachas" & vbNewLine & "Preço: 0.80€" And quantia >= preçoB Then
            Label1.Text = "Produto: Bolachas" & vbNewLine & "Valor a pagar: 0.80€" & vbNewLine & "Valor inserido:" & quantia & "€" & vbNewLine & "Troco:" & trocoB & "€" & vbNewLine & "Compra efetuada com sucesso!"
        ElseIf Label1.Text = "Produto: Bolachas" & vbNewLine & "Preço: 0.80€" And quantia < preçoB Then
            Label1.Text = "Quantia insuficiente!"
        ElseIf Label1.Text = "Produto: Sumo" & vbNewLine & "Preço: 0.90€" And quantia >= preçoS Then
            Label1.Text = "Produto: Sumo" & vbNewLine & "Valor a pagar: 0.90€" & vbNewLine & "Valor inserido:" & quantia & "€" & vbNewLine & "Troco:" & trocoS & "€" & vbNewLine & "Compra efetuada com sucesso!"
        ElseIf Label1.Text = "Produto: Sumo" & vbNewLine & "Preço: 0.90€" And quantia < preçoS Then
            Label1.Text = "Quantia insuficiente!"


        End If

 

Em vez de usar uma textbox, pode usar uma maskedtextbox que lhe permite definir a máscara que pretende utilizar. Por exemplo se indicar que só permite inserir números ao digitar não irá conseguir inserir letras.

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.maskedtextbox.mask?view=net-5.0

http://www.macoratti.net/11/02/vbn_msk1.htm

 

  • Thanks 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.