Я думаю, что на этот вопрос было бы легче ответить, если бы мы точно знали, для чего нужен пользовательский контроль и почему он должен обрабатывать исключения. Но даже без этой информации существует только очень много потенциальных решений этой проблемы, в зависимости от того, как вы хотите, чтобы она работала.
Если у вас есть один конкретный экземпляр вашегоusercontrol в вашем проекте, который вы хотите вызвать событие, вам нужно иметь ссылку на этот экземпляр. Поскольку вы хотите получить доступ к этому экземпляру из Module
, я бы предложил создать поле в Module
для хранения этой ссылки. Вы можете добавить следующее:
Public UserControlInstance As [YourUserControlTypeHere]
Так как это будет в Module
, это автоматически Shared
(что, судя по вашему вопросу, является концепцией программирования, которую вы, возможно, захотитеследить за публикациями). Это позволяет ссылаться на него из любого места в проекте без использования экземпляра.
Вы можете установить UserControlInstance
для экземпляра вашего usercontrol при создании этого usercontrol. Например, если ваш usercontrol является частью Window
или Form
, вы можете установить UserControlInstance
из конструктора (Public Sub New
) этого Window
или Form
.
С другой стороны, если вы хотите, чтобы любой и все экземпляров вашего usercontrol вызывал событие при вызове RaiseAnErrorSub
, вы можете сделать как RaiseAnErrorSub
, так и MyErrorEvent
Shared
, например, так:
Public Shared Event MyErrorEvent(Ex as Exception)
Public Shared Sub RaiseAnErrorSub(Ex as Exception)
RaiseEvent MyErrorEvent(Ex)
End Sub
Таким образом, вы можете вызвать RaiseAnErrorSub
из любой точки проекта, и все экземпляры вашего usercontrol вызовут событие (эффективно, во всяком случае).