Ir para o conteúdo
Lisboeta

Duvidas em somar TextBoxes Eventos Keypress e TextChanged

Mensagens Recomendadas

Lisboeta    0
Lisboeta

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fLaSh_PT    0
fLaSh_PT

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() ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Weasel    3
Weasel

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Lisboeta    0
Lisboeta

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Weasel    3
Weasel

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Lisboeta    0
Lisboeta

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

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Weasel    3
Weasel

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade