AJUDA COM VALIDATING EM FORMULARIOS

 Tópico anterior Próximo tópico Novo tópico

AJUDA COM VALIDATING EM FORMULARIOS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#435819 - 11/03/2014 10:30:15

ANGELOATA
ARACATUBA
Cadast. em:Junho/2009


Galera

Estou tentando fazer uma rotina para validar todos os meus campos no botao ok da aplicao e to chamado a seguinte funo:

Citação:
  Private Function ValidarTudo(ByRef Tela As Control, ByVal controlefoco As Control) As Boolean

        t_errovalidacao = False

        Dim Campo As Object

        Dim allTextBoxes = From txt In Tela.Controls
                           Order By txt.TabIndex


        For Each Campo In allTextBoxes

            If TypeOf Campo Is System.Windows.Forms.GroupBox Or
                TypeOf Campo Is System.Windows.Forms.TabPage Or
                TypeOf Campo Is System.Windows.Forms.Panel Then

                ValidarTudo(Campo, controlefoco)

            ElseIf TypeOf Campo Is System.Windows.Forms.TextBox Or
                   TypeOf Campo Is System.Windows.Forms.ComboBox Or
                   TypeOf Campo Is System.Windows.Forms.CheckBox Then

                Campo.Focus()
                controlefoco.Focus()

                If t_errovalidacao = True Then
                    Exit For
                End If

            End If

        Next

        If t_errovalidacao = True Then

            Return True

        Else

            Return False

        End If

    End Function


Citação:
  Private Sub W_PAIS_Validating(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles W_PAIS.Validating

        If IsNumeric(W_PAIS.Text) = False Then

            MessageBox.Show([]Codigo do pais invalido![], []Aviso[], MessageBoxButtons.OK, MessageBoxIcon.Information)
            t_errovalidacao = True
            e.Cancel = True

        Else

            If CInt(W_PAIS.Text) <= 0 Then

                MessageBox.Show([]Codigo do pais invalido![], []Aviso[], MessageBoxButtons.OK, MessageBoxIcon.Information)
                t_errovalidacao = True
                e.Cancel = True

            End If

        End If

    End Sub


Mas quando executo a rotina, esta executando todos os eventos que esto atribuidos aos campos. Exemplo: ENTER, PRESSKEY, so que eu gostaria de isolar apenas o validating ou o validated,.

Alguem poderia me ajudar?



#435849 - 11/03/2014 15:17:00

ANGELOATA
ARACATUBA
Cadast. em:Junho/2009



Como posso chamar um evento de um controle com esses dados (Ver trecho em negrito)?

Citação:
  
    Dim allTextBoxes = From txt In Tela.Controls
                                    Order By txt.TabIndex

        For Each Campo In allTextBoxes

            If TypeOf Campo Is System.Windows.Forms.GroupBox Or
               TypeOf Campo Is System.Windows.Forms.TabPage Or
               TypeOf Campo Is System.Windows.Forms.Panel Then

                ValidarTudo(Campo, controlefoco)

            ElseIf TypeOf Campo Is System.Windows.Forms.TextBox Then

                Dim tb As TextBox = TryCast(Campo, TextBox)

                W_PAIS_Validating(tb, c)

            ElseIf TypeOf Campo Is System.Windows.Forms.ComboBox Or
                   TypeOf Campo Is System.Windows.Forms.CheckBox Then


                Campo.Focus()

                controlefoco.Focus()

                If t_errovalidacao = True Then
                    Exit For
                End If

            End If

        Next




#436033 - 14/03/2014 09:32:16

ANGELOATA
ARACATUBA
Cadast. em:Junho/2009


Consegui encontrar a soluo.

Basta utilizar os metodos me.validate() e me.validatechildren().

Se alguem precisar, aconselho usar com o componente errorprovider, pois as validaes no seguem o tabindex dos campos no form.

entao se for ficar dandos messagebox ficara estranho,

Att.

Angelo



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por ANGELOATA em 14/03/2014 09:34:11