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

Furriel

[VB.NET 2003] Validar textbox´s

10 mensagens neste tópico

Olá a todos,

Estou a fazer uma aplicação que tenho que introduzir várias notas de disciplinas.

Como as notas das disciplinas estão entre 0 e 20, fiz as seguintes validações:

Me.TextBox1.MaxLength = 2

        Dim texto As String = Me.TextBox44.Text
        Dim abc As String = "0123456789"
        Dim fim As Integer = texto.Length
        Dim pos, i, cont, num As Integer
        Dim caracter As String

        If fim <> 0 Then
            For i = 0 To fim - 1
                caracter = texto.Substring(i, 1)
                pos = abc.IndexOf(caracter)
                If (pos = -1) Then
                    cont = cont + 1
                End If
            Next
            If cont > 0 Then
                MessageBox.Show("Só pode introduzir algarismos.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Me.TextBox44.Text = ""
            Else
                num = Val(Me.TextBox44.Text)
                If num < 0 Or num > 100000 Then
                    MessageBox.Show("Número inválido.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    Me.TextBox44.Text = ""
                Else
                    Me.Button4.Enabled = True
                End If
            End If
        End If

Até aqui tudo muito bem, o problema é que tenho 43 textbox´s, existe alguma maneira de para cada textbox chamar o mesmo procedimento?

Será que com o Directcast dá para fazer isso?

EDIT: Erro corrigido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Após realizar mais testes verifiquei que ainda dá erros em algumas situações.

Para corrigir esse problema será que me sabem dizer como fazer para validar apenas quando carregar no "Enter"?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Adiciona o evento KeyPress a textbox e dps faz algo do genero:

If e.KeyCode = Keys.Enter Then

(...)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Porque não utilizas a função IsNumeric() em vez de tares com aquele codigo todo ?

If Not IsNumeric(textbox1.text) Then Messagebox.Show("Invalido")

Ve este post que foi com esse proposito que fiz aquele código, não ter q o repetir em todas as caixas de texto. Só tens que adaptar à tua situação e no evento que queres.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Adiciona o evento KeyPress a textbox e dps faz algo do genero:

If e.KeyCode = Keys.Enter Then

(...)

EDIT: Já adicionei o evento mas dá erro, não existe o KeyCode associado a e.

Porque não utilizas a função IsNumeric() em vez de tares com aquele codigo todo ?

If Not IsNumeric(textbox1.text) Then Messagebox.Show("Invalido")

Ve este post que foi com esse proposito que fiz aquele código, não ter q o repetir em todas as caixas de texto. Só tens que adaptar à tua situação e no evento que queres.

Vou analisar o teu código e ver as alterações a fazer :)

Bem me parecia que existia uma função para verificar se era numérico ou não :D

EDIT: Já analisei o teu código mas não percebo onde coloco a parte da verificação. É no Private Sub TextBoxLostFocus?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já está ;) Mais uma vez muito obrigado

De qualquer das formas se me souberem dizer como por a funcionar o "Enter", é que não aceita o GetCode :) Isto funcionava se fosse em Java :)

aqui está o código adaptado:

        Private Sub CheckBox43_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox43.CheckedChanged
        For Each ctrl As Control In Me.Panel1.Controls
            If TypeOf ctrl Is CheckBox Then
                DirectCast(ctrl, CheckBox).Checked = CheckBox43.Checked
            End If
        Next
    End Sub

        Private Sub TextBoxLostFocus(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim texto As String = CType(sender, TextBox).Text
        Dim fim As Integer = texto.Length
        Dim nota As Integer

        If fim <> 0 Then
            If Not IsNumeric(CType(sender, TextBox).Text) Then
                MessageBox.Show("Só pode introduzir algarismos.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
                CType(sender, TextBox).Text = ""
            Else
                nota = Val(CType(sender, TextBox).Text)
                If nota < 10 Or nota > 20 Then
                    MessageBox.Show("Nota inválida.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    CType(sender, TextBox).Text = ""
                End If
            End If
        End If
    End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estava a usar este:

Private Sub TextBox44_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox44.KeyPress

End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já vi :)

Obrigado.

Já agora o código para a tecla "Enter" é o 13.

If e.KeyChar = Chr(13) Then
...

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