Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/07/2011, 14:32
Avatar de HaverRamirez
HaverRamirez
 
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 10 meses
Puntos: 33
Respuesta: Uso de AddHandler

Bueno entonces dentro de tu dll, tienes que pasar el boton como parametro, ya se como object, cosa que no te recomiendo por el boxing, simplente manda un boton como parametro

public sub AmarraEventosControl(Byval Ctrl as Control)

addhandler ctype(ctrl,button).Click, addressof EventoClick()

end sub

es algo asi o no?

mm cero que ya medio entendi, has de cuentas que lo que quieres es como por ejemplo que todos los textbox del form cambien de color en el focus, lo que puedes hacer es crear un formulario padre que herede a sus hijos los evetos en el load
algo asi

si creas este formulario y le pones este codigo, todos los forms que hereden de el tendran amarrados estos eventos a el

Código vb:
Ver original
  1. Imports System.ComponentModel
  2. Imports System.Drawing
  3. Imports System.Windows.Forms
  4.  
  5. Public Class FormEntradaDatosBase
  6.  
  7.     Private m_ColorEnfoqueFrente As Color
  8.     Private m_ColorEnfoqueFondo As Color
  9.  
  10.     <Description("El color del frente de los controles.")> _
  11.     <Category("Aspecto")> _
  12.     Public Property ColorEnfoqueFrente() As Color
  13.         Get
  14.             Return m_ColorEnfoqueFrente
  15.         End Get
  16.         Set(ByVal Valor As Color)
  17.             m_ColorEnfoqueFrente = Valor
  18.         End Set
  19.     End Property
  20.  
  21.  
  22.     <Description("El color de fondo de los controles.")> _
  23.     <Category("Aspecto")> _
  24.     Public Property ColorEnfoqueFondo() As Color
  25.         Get
  26.             Return m_ColorEnfoqueFondo
  27.         End Get
  28.         Set(ByVal Value As Color)
  29.             m_ColorEnfoqueFondo = Value
  30.         End Set
  31.     End Property
  32.  
  33.     Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
  34.         MyBase.OnLoad(e)
  35.         ' Registra eventos para controles de entrada.
  36.        For Each ctrl As Control In ObténControlesSecundarios(Me)
  37.             If ctrl.BackColor.Equals(SystemColors.Window) Then
  38.                 AddHandler ctrl.Enter, AddressOf Control_Enter
  39.                 AddHandler ctrl.Leave, AddressOf Control_Leave
  40.             End If
  41.         Next
  42.     End Sub
  43.  
  44.     ' Almacenamiento temporal para los colores del control
  45.    Private guardaColorFrente As Color = SystemColors.WindowText
  46.     Private guardaColorFondo As Color = SystemColors.Window
  47.  
  48.     ' Cambia los colores cuando el control obtiene el enfoque.
  49.    Private Sub Control_Enter(ByVal sender As Object, ByVal e As EventArgs)
  50.         Dim ctrl As Control = DirectCast(sender, Control)
  51.         ctrl.ForeColor = ColorEnfoqueFrente
  52.         ctrl.BackColor = ColorEnfoqueFondo
  53.     End Sub
  54.  
  55.     ' Restaura los colores originales cuando el control pierde en enfoque.
  56.    Private Sub Control_Leave(ByVal sender As Object, ByVal e As EventArgs)
  57.         Dim ctrl As Control = DirectCast(sender, Control)
  58.         ctrl.ForeColor = guardaColorFrente
  59.         ctrl.BackColor = guardaColorFondo
  60.     End Sub
  61.  
  62.     ' Devuelve la lista de todos los controles contenidos en otro control.
  63.    Private Function ObténControlesSecundarios(ByVal parent As Control) As ArrayList
  64.         Dim resultado As New ArrayList()
  65.         For Each ctrl As Control In parent.Controls
  66.             ' Agregue este control al resultado.
  67.            resultado.Add(ctrl)
  68.             ' Llama recursivamente a este método para agregar también todos los controles secundarios.
  69.            resultado.AddRange(ObténControlesSecundarios(ctrl))
  70.         Next
  71.         Return resultado
  72.     End Function
  73.  
  74.     ' Eventos públicos
  75.    Public Event ApActivada As EventHandler
  76.     Public Event ApDesactivada As EventHandler
  77.  
  78.     Protected Overrides Sub WndProc(ByRef m As Message)
  79.         Const WM_ACTIVATEAPP As Integer = &H1C
  80.         ' Permite que el formulario base procese este mensaje
  81.        MyBase.WndProc(m)
  82.         ' Procesa sólo el mensaje WM_ACTIVATEAPP.
  83.        If m.Msg = WM_ACTIVATEAPP Then
  84.             If m.WParam.ToInt32 <> 0 Then
  85.                 AlActivarAp(EventArgs.Empty)
  86.             Else
  87.                 AlDesactivarAp(EventArgs.Empty)
  88.             End If
  89.         End If
  90.     End Sub
  91.  
  92.     ' Los métodos protegidos Onxxxx que general el evento
  93.    Protected Sub AlActivarAp(ByVal e As EventArgs)
  94.         RaiseEvent ApActivada(Me, e)
  95.     End Sub
  96.  
  97.     Protected Sub AlDesactivarAp(ByVal e As EventArgs)
  98.         RaiseEvent ApDesactivada(Me, e)
  99.     End Sub
  100.  
  101. End Class