vb.net, не может вызвать событие напрямую - PullRequest
1 голос
/ 28 марта 2012

У меня есть код:

innerchannel.Closing += Function(sender, e)
                        RaiseEvent Closing(sender, e)

                        End Function

Существует проблема с

innerchannel.Closing 

, в которой VisualStudio сообщает мне:

Public Event Closing(sender As Object, e As System.EventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.

Как сделатьЯ исправляю это, чтобы работать соответственно?

Ответы [ 3 ]

7 голосов
/ 28 марта 2012

Полагаю, вы хотите добавить обработчик в ваше закрытие:

AddHandler innerchannel.Closing, AddressOf Closed

Если вы хотите вызвать пользовательское событие, например, в UserControl:

Class Channel
    Inherits UserControl
    Public Event Closing(ch As Channel)

    ' this could be for example a button-click handler
    Protected Sub Closed(sender As Object, e As System.EventArgs)
        RaiseEvent Closing(Me)
    End Sub
End Class
6 голосов
/ 28 марта 2012

Вы не используете += в VB для добавления обработчиков событий. Вы используете AddHandler.

Ваш код пытается вызвать Closing, как если бы это была функция, и выполнить дополнение к ее результату.

4 голосов
/ 28 марта 2012

Сначала вы должны прикрепить метод к обработчику событий следующим образом:

AddHandler innerchannel.Closing, AddressOf Closed

и используйте RaiseEvent

примечание от MSDN:

Если событие не было объявлено в модуле, в котором оно находится поднят, возникает ошибка. Следующий фрагмент иллюстрирует событие объявление и процедура, в которой происходит событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...