• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Lisboeta

Duvidas em somar TextBoxes Eventos Keypress e TextChanged

14 mensagens neste tópico

Olá pessoal!

É o seguinte, eu quero fazer umas contas sem precisar carregar num Botão! E eu pensei em utilizar o Load, so que não dá (lógico (quando a form arranca o valor das text's tao "")) porque diz que " " que é String e não Decimal...eu gostava de saber qual é a forma para fazer qualquer tipo de calculo sem carregar num botão.

Obrigado  :P

edit: titulo alterado para melhor se adequar à questão. - Weasel

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No form load..

Adiciona

'Força o form a aparecer..
Me.Show
Application.DoEvents

'Aqui fazes uma conversão do valor:
Dim MyDbl As Double = Convert.ToDouble(my_txt.text)

.."quando a form arranca o valor das text's tao ""

Acho que estás a fazer qualquer confusão.. se definires uma textbox... quando correr o evento Form_Load.. o valor apresentado será o definido nas propriedades..

Não estás a fazer confusão com o Sub New() ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes fazer isso de forma muito simples (lê bem o código que vais aprender umas coisas extra), pressupondo que estás a usar 3 Textboxes Valor1 Valor2 e Resultado:

Código Testado em Visual Basic 2008 Express

Public Class Form1
    'Apenas permite que sejam escritos números ou "." ou "," nas textBox1 e TextBox2
    Private Sub TextBoxes_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress, TextBox2.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "." And Not e.KeyChar = "," Then
            e.Handled = True
        End If
    End Sub
    
    'Verifica se as Textbox1 e Textbox2 têm conteúdo, e caso afirmativo converte as string para Double com o "Double.Parse()" e apresenta a soma no Textbox3
    Private Sub TextBoxes_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged
        If TextBox1.TextLength > 0 AndAlso TextBox2.TextLength > 0 Then
            TextBox3.Text = Double.Parse(TextBox1.Text) + Double.Parse(TextBox2.Text)
        Else
            TextBox3.Text = "0"
        End If
    End Sub
End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

oh weasel e nao dara fazendo o try catch das text's?n e a msm coisa??

-------//-------------

flash_pt o que aquilo das " " ker dizr que o valor e vazio...e sendo vazio considera-se string e nao decimal! não...ker dizer acho k nao

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dar dá, mas penso que assim será a forma mais correcta pois impede à partida que o utilizador introduza caracteres ilegais à operação e penso que não tem muita lógica usar nesta situação o Try catch

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya tou a tou a utilizar 3 textboxs... LOL

vou tentar fazer isso...:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e ja agr esses dois codigos meto como procedimento privados digamos assim?!

eu coloco aond...faço como um procedimento privado ne?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Private = Privado  :P

Acho que dei a resposta à tua dúvida  :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu sei k private e privado...

n percebi a tua "ajuda" :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

outra coisa que variavel...se pode chamar assim é esta..."textboxes"??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e ja agr esses dois codigos meto como procedimento privados digamos assim?!

eu coloco aond...faço como um procedimento privado ne?

outra coisa que variavel...se pode chamar assim é esta..."textboxes"??

Public Class Form1
    'Apenas permite que sejam escritos números ou "." ou "," nas textBox1 e TextBox2
    Private Sub TextBoxes_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress, TextBox2.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "." And Not e.KeyChar = "," Then
            e.Handled = True
        End If
    End Sub
   
    'Verifica se as Textbox1 e Textbox2 têm conteúdo, e caso afirmativo converte as string para Double com o "Double.Parse()" e apresenta a soma no Textbox3
    Private Sub TextBoxes_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged, TextBox2.TextChanged
        If TextBox1.TextLength > 0 AndAlso TextBox2.TextLength > 0 Then
            TextBox3.Text = Double.Parse(TextBox1.Text) + Double.Parse(TextBox2.Text)
        Else
            TextBox3.Text = "0"
        End If
    End Sub
End Class

O TextBoxes_KeyPress e TextBoxes_TextChanged não são variáveis, são os nomes dos Private Sub que criaste, se reparares é a mesma coisa que teres isto:

Public Class Form1
    'Apenas permite que sejam escritos números ou "." ou "," na TextBox1
    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "." And Not e.KeyChar = "," Then
            e.Handled = True
        End If
    End Sub
   
    'Apenas permite que sejam escritos números ou "." ou "," na TextBox2
    Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack And Not e.KeyChar = "." And Not e.KeyChar = "," Then
            e.Handled = True
        End If
    End Sub

    'Verifica se a Textbox1 tem conteúdo, e caso afirmativo converte as string para Double com o "Double.Parse()" e apresenta a soma no Textbox3
    Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        If TextBox1.TextLength > 0 AndAlso TextBox2.TextLength > 0 Then
            TextBox3.Text = Double.Parse(TextBox1.Text) + Double.Parse(TextBox2.Text)
        Else
            TextBox3.Text = "0"
        End If
    End Sub

'Verifica se a Textbox2 têm conteúdo, e caso afirmativo converte as string para Double com o "Double.Parse()" e apresenta a soma no Textbox3
    Private Sub TextBox2_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
        If TextBox1.TextLength > 0 AndAlso TextBox2.TextLength > 0 Then
            TextBox3.Text = Double.Parse(TextBox1.Text) + Double.Parse(TextBox2.Text)
        Else
            TextBox3.Text = "0"
        End If
    End Sub
End Class

O primeiro código que te apresentei apenas elimina muito código redundante, imagina se em vez de 2 TextBoxes tinhas 15.

Private Sub TextBoxes_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress, TextBox2.KeyPress

TextBoxes_KeyPress - Nome do Sub, podia ser "Evento_quando_pressiono_teclas" ou o que te viesse à cabeça

Handles TextBox1.KeyPress, TextBox2.KeyPress - Quer dizer que vai "lidar" com os eventos Keypress do textBox1 e do textbox2

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se a questão está resolvida clica em "Topic Solved" no fundo do tópico

Tema Padrão -> 23842135.png

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora