Tópico anterior Próximo tópico Novo tópico
VB.NET
#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 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? |
|||
#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 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 anterior Próximo tópico Novo tópico