none
Valida todos los controles secundarios de TabPage de un formulario RRS feed

  • Pregunta

  • Hola a todos...

    Tengo un formulario con un tabControl que tiene 2 tabPage.

    En cada uno necesito guardar la información por separado. Así que en el botón guardar necesito llamar al método que valide los controls secundarios de ese tabPage, tal como se hace para un formulario.

    Al validar el formulario tengo esto:

       
     Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
            'Verifica que todo se halla validado bien.
    
            If Not Me.ValidateChildren Then
                Return
            End If

    cómo hago para que solo valide la tabPage seleccionado (en que estoy trabajando) y no todo el formulario?

    Agradezco su ayuda


    Saludos, Solph.

    domingo, 27 de enero de 2013 20:38

Todas las respuestas

  • Hola. 

    Cuando te encuentres en el TabPage respectivo en el cual quieres grabar un dato, podrias desabilitar el otro TabPage y ahi utilizar lo siguiente:

      Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
                Me.ValidateChildren((ValidationConstraints.ImmediateChildren Or ValidationConstraints.Enabled))
       End Sub 

    Como vez  utilizando esa linea de codigo, valida los controles secundarios que se encuentran habilitados(ENABLE)

    Podrias chequear otros enumerados para la validacion de controles secundarios de un formulario:

    http://msdn.microsoft.com/es-es/library/system.windows.forms.validationconstraints(v=vs.90).aspx


    Luis Muñoz Hidalgo
    Mi Blog
    Desarrollador de Software
    Trujillo-Perú


    domingo, 27 de enero de 2013 21:08
  • hola

    mm la verdad no lo veo tan simple, investigando el tema pude ver que aqui se plantea algo similar

    http://social.msdn.microsoft.com/Forums/da-DK/winforms/thread/1cef306e-6d39-432b-b479-29140fd11766

    como veras con Reflection se podria acceder a un metodo provado del tab para invocar la validacion

    pero me pregunto, porque simplemente no validas de forma habitual creando un metodo que tome los controles y aplique la validacion mostrando el error en el ErrorProvider

    podrias hacer

    private Function ValidarTabPage2() As Boolean
    
       Dim esvalido As Boolean = true
    
       If TextBox1.Text = "" Then
              ErrorProvider.SetError(Textbox1, "el campo es obligatorio")
              esvalido = false
       End If
    
       Return esvalido
    End Sub
    
    private Function ValidarTabPage2() As Boolean
    
       Dim esvalido As Boolean = true
    
       If TextBox2.Text = "" Then
              ErrorProvider.SetError(Textbox2, "el campo es obligatorio")
              esvalido = false
       End If
    
       Return esvalido
    End Sub


    desde el click de un boton podrias invocar a estos metodo para aplciar las validaciones

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 27 de enero de 2013 22:03
  • Gracias Luis

    Me funcionó de esa manera...


    Saludos, Solph.

    lunes, 28 de enero de 2013 9:43
  • Hola Leandro gracias por tu ayuda

    Me interesa algo que mencionas:

    pero me pregunto, porque simplemente no validas de forma habitual creando un metodo que tome los controles y aplique la validacion mostrando el error en el ErrorProvider

    Yo utilizo para cada control el método validating, para validar inmediatamente y no esperar hasta el final para notificarle al usuario que tiene un error. Sin embargo, para puede que el usuario con el mouse se salte al botón guardar sin llenar algún campo y por ello utilizo en este botón el "validateChildren".

    Me gustaría saber tu opinión al respecto antes de cerrar el tema.


    Saludos, Solph.

    lunes, 28 de enero de 2013 9:49