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 originalImports System.ComponentModel
Imports System.Drawing
Imports System.Windows.Forms
Public Class FormEntradaDatosBase
Private m_ColorEnfoqueFrente As Color
Private m_ColorEnfoqueFondo As Color
<Description("El color del frente de los controles.")> _
<Category("Aspecto")> _
Public Property ColorEnfoqueFrente() As Color
Get
Return m_ColorEnfoqueFrente
End Get
Set(ByVal Valor As Color)
m_ColorEnfoqueFrente = Valor
End Set
End Property
<Description("El color de fondo de los controles.")> _
<Category("Aspecto")> _
Public Property ColorEnfoqueFondo() As Color
Get
Return m_ColorEnfoqueFondo
End Get
Set(ByVal Value As Color)
m_ColorEnfoqueFondo = Value
End Set
End Property
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
' Registra eventos para controles de entrada.
For Each ctrl As Control In ObténControlesSecundarios(Me)
If ctrl.BackColor.Equals(SystemColors.Window) Then
AddHandler ctrl.Enter, AddressOf Control_Enter
AddHandler ctrl.Leave, AddressOf Control_Leave
End If
Next
End Sub
' Almacenamiento temporal para los colores del control
Private guardaColorFrente As Color = SystemColors.WindowText
Private guardaColorFondo As Color = SystemColors.Window
' Cambia los colores cuando el control obtiene el enfoque.
Private Sub Control_Enter(ByVal sender As Object, ByVal e As EventArgs)
Dim ctrl As Control = DirectCast(sender, Control)
ctrl.ForeColor = ColorEnfoqueFrente
ctrl.BackColor = ColorEnfoqueFondo
End Sub
' Restaura los colores originales cuando el control pierde en enfoque.
Private Sub Control_Leave(ByVal sender As Object, ByVal e As EventArgs)
Dim ctrl As Control = DirectCast(sender, Control)
ctrl.ForeColor = guardaColorFrente
ctrl.BackColor = guardaColorFondo
End Sub
' Devuelve la lista de todos los controles contenidos en otro control.
Private Function ObténControlesSecundarios(ByVal parent As Control) As ArrayList
Dim resultado As New ArrayList()
For Each ctrl As Control In parent.Controls
' Agregue este control al resultado.
resultado.Add(ctrl)
' Llama recursivamente a este método para agregar también todos los controles secundarios.
resultado.AddRange(ObténControlesSecundarios(ctrl))
Next
Return resultado
End Function
' Eventos públicos
Public Event ApActivada As EventHandler
Public Event ApDesactivada As EventHandler
Protected Overrides Sub WndProc(ByRef m As Message)
Const WM_ACTIVATEAPP As Integer = &H1C
' Permite que el formulario base procese este mensaje
MyBase.WndProc(m)
' Procesa sólo el mensaje WM_ACTIVATEAPP.
If m.Msg = WM_ACTIVATEAPP Then
If m.WParam.ToInt32 <> 0 Then
AlActivarAp(EventArgs.Empty)
Else
AlDesactivarAp(EventArgs.Empty)
End If
End If
End Sub
' Los métodos protegidos Onxxxx que general el evento
Protected Sub AlActivarAp(ByVal e As EventArgs)
RaiseEvent ApActivada(Me, e)
End Sub
Protected Sub AlDesactivarAp(ByVal e As EventArgs)
RaiseEvent ApDesactivada(Me, e)
End Sub
End Class