AJUDA COM VALIDATING EM FORMULARIOS
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?
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
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