none
¿Cómo puedo hacer una clase más o menos genérica que reciba como parámetro un Form y reemplace el procedimiento WndProc para ese Form específico? Explico. RRS feed

  • Pregunta

  • Suponiendo que quiero hacer una clase que reciba como parámetro un Form para que su evento Load haga algo, haría algo más o menos como esto:

    Public Class MiEventoLoad

      Public Sub New(Formulario as Form)

           AddHandler Formulario.Load, AddressOf MiLoad

      End Sub

      Private Sub MiLoad()

         '...y aquí haría algo específico para el evento Load del formulario.

      End Sub

    End Class

    Deseo hacer algo similar para el método WndProc específico para el formulario que pase como parámetro, o sea:


    Protected Overrides Sub WndProc(ByRef m As Message)

    ....'que haga algo

    End Sub

    ¿La consulta es, cómo le indico en la clase que ese procedimiento WndProc es para el formulario que ingrese como parámetro? o cómo lo puedo enfocar de manera que sea genérico para cualquier Form que indique.


    • Editado James2016-2 lunes, 16 de diciembre de 2019 19:51
    lunes, 16 de diciembre de 2019 19:51

Respuestas

  • Se me ocurre que podrías conseguir el efecto deseado como sigue:

    • Crea una clase que herede de Form
    • Dentro de esa clase haz un overrides del WndProc.
    • Y después, en todos los formularios donde quieras suplantar el WndProc, simplemente cambia el "Inherits..." de forma que en lugar de heredar de Form hereden de esa clase que acabas de definir.
    lunes, 16 de diciembre de 2019 20:46

Todas las respuestas

  • Se me ocurre que podrías conseguir el efecto deseado como sigue:

    • Crea una clase que herede de Form
    • Dentro de esa clase haz un overrides del WndProc.
    • Y después, en todos los formularios donde quieras suplantar el WndProc, simplemente cambia el "Inherits..." de forma que en lugar de heredar de Form hereden de esa clase que acabas de definir.
    lunes, 16 de diciembre de 2019 20:46
  • Ah, voy a probar a ver qué tal, gracias.
    lunes, 16 de diciembre de 2019 22:23