Если я правильно понимаю вопрос, проблема в том, что вы объявляете свое мероприятие сторонним типом для параметра e
:
Public Event ButtonClicked(ByVal Sender As System.Object, ByVal e As AxFPSpreadADO._DSpreadEvents_ButtonClickedEvent)
Что вы должны сделать, это определитьваш собственный класс, который наследует EventArgs
:
Public Class ButtonClickedEventArgs
Inherits EventArgs
'...
End Class
и затем использует его для своего собственного события.Вы можете сделать это следующим образом:
Public Event ButtonClicked(sender As System.Object, e As ButtonClickedEventArgs)
, но вы должны сделать это следующим образом:
Public Event ButtonClicked As EventHandler(Of ButtonClickedEventArgs)
В вашем собственном компоненте вы должны полностью реализовать шаблон событий.Это означает выделенный метод для вызова события:
Protected Overridable Sub OnButtonClicked(e As ButtonClickedEventArgs)
RaiseEvent ButtonClicked(Me, e)
End Sub
В обработчике события для стороннего компонента вы можете затем скопировать данные из полученного объекта AxFPSpreadADO._DSpreadEvents_ButtonClickedEvent
в ваш собственный объект ButtonClickedEventArgs
,Я не знаю, какие свойства вам нужны, поэтому я просто воспользуюсь примерами:
Private Sub sprSpread_ButtonClicked(sender As Object, e As AxFPSpreadADO._DSpreadEvents_ButtonClickedEvent) Handles sprSpread.ButtonClicked
Dim eventArgs As New ButtonClickedEventArgs
With eventArgs
.Name = e.Name
.Number = e.Number
End With
OnButtonClicked(e)
End Sub
РЕДАКТИРОВАТЬ: Вы также можете рассмотреть возможность добавления конструктора копирования в свой собственный класс аргументов событий, так что у вас не будетнаписать код копирования более одного раза, если вы используете его в нескольких местах, например,
Public Class ButtonClickedEventArgs
Inherits EventArgs
Public Sub New(e As AxFPSpreadADO._DSpreadEvents_ButtonClickedEvent)
Name = e.Name
Number = e.Number
End Sub
'...
End Class
, а затем поднять свое событие следующим образом:
Private Sub sprSpread_ButtonClicked(sender As Object, e As AxFPSpreadADO._DSpreadEvents_ButtonClickedEvent) Handles sprSpread.ButtonClicked
OnButtonClicked(New ButtonClickedEventArgs(e))
End Sub