Many programmers are familiar with declaring an object variable in class modules and other places to capture events from a form and handle them in a generic way:
Private WithEvents m_Form As Form
It might be useful to do this for user controls as well, but you need a reference to the UserControl object. Getting this reference proves harder than it should be. This code sets up the m_UserControl variable:
' DeclarationsPrivate WithEvents m_UserControl As UserControlPrivate Declare Sub CopyMemory Lib "kernel32" _Alias "RtlMoveMemory" (pDest As Any, _pSource As Any, ByVal ByteLen As Long)Private Sub UserControl_Initialize()' Code to set up the m_UserControl variableDim UC As UserControlCopyMemory UC, UserControl, 4Set m_UserControl = UCCopyMemory UC, 0&, 4End Sub
Once this code has been executed, the m_UserControl events fire as expected. Using this technique and sharing the created reference, you can sink the UserControl events in a class module, allowing development of generic event handlers for your controls.