AJUDA COM VALIDATING EM FORMULARIOS

ANGELOATA 11/03/2014 10:30:15
#435819
Galera

Estou tentando fazer uma rotina para validar todos os meus campos no botao ok da aplicação e to chamado a seguinte função:

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 estão atribuidos aos campos. Exemplo: ENTER, PRESSKEY, so que eu gostaria de isolar apenas o validating ou o validated,.

Alguem poderia me ajudar?
ANGELOATA 11/03/2014 15:17:00
#435849

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

ANGELOATA 14/03/2014 09:32:16
#436033
Consegui encontrar a solução.

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

Se alguem precisar, aconselho usar com o componente errorprovider, pois as validações não seguem o tabindex dos campos no form.

entao se for ficar dandos messagebox ficara estranho,

Att.

Angelo
Tópico encerrado , respostas não são mais permitidas