none
Reutilizar método de un formulario base RRS feed

  • Pregunta

  • Hola.

    Trabajando con vb.net 2013 framework 4.0

    Tengo un formulario base que tiene ciertas propiedades, procedimientos y funciones.

    Entre las funciones tengo estas

    Public Sub NuevoProceso() If Nuevo_Validar() = False Then Return End If lNuevoEstado = True lEditarEstado = True Objetos_Habilitar() Objetos_Blanquear() End Sub

    Public Function Nuevo_Validar() As Boolean
            Return False

        End Function


    Cuando creo un nuevo formulario, heredo del  formulario base, al ejecutar el procedimiento NuevoProceso, necesito ejecutar una nueva versión Nuevo_Validar, que necesito escribirla en el nuevo formulario, ya que el usuario podría o no tener permisos para hacer Nuevo.

    Como puedo hacer para sobre escribir la función y de ser necesario sobre escribir y ejecutar el código del objeto padre.

    Mi experiencia con VB.net es poca y estoy tratando de aprovechar en algo la herencia.

    Saludos

    Mauricio


    domingo, 23 de julio de 2017 4:09

Respuestas

Todas las respuestas

  • Para suplantar la función en la clase hija, ponle la palabra Overrides:

        Public Overrides Function Nuevo_Validar() As Boolean
            Return loQueSea

        End Function

    Y en la clase base, añádele Overridable:

        Public Overridable Function Nuevo_Validar() As Boolean
            Return False

        End Function

    • Propuesto como respuesta Renzo20 domingo, 23 de julio de 2017 11:38
    domingo, 23 de julio de 2017 10:31
  • Hola Alberto.

    Gracias funciono perfecto.

    Una pregunta más.

    Una vez suplantada la función base, es posible llamar a la función base desde la función suplantada, algo como.

    Public Overrides Function Nuevo_Validar() As Boolean
    
        if Formulario_Base.Nuevo_Validar() = False Then
    
           Return False
    
        end if 
    
        Validaciones de la instancia
        ...
        ..
        return 
        
    End Function

    Saludos.

    Mauricio

    domingo, 23 de julio de 2017 23:30
  • La palabra clave es MyBase:

    If MyBase.Nuevo_Validar() = False Then ...

    https://msdn.microsoft.com/en-us/library/dzfhkk01(v=vs.90).aspx

    • Marcado como respuesta mpulla lunes, 24 de julio de 2017 23:02
    lunes, 24 de julio de 2017 6:55