VB Эквивалент C # Создание событий - PullRequest
2 голосов
/ 12 апреля 2010

Я пытаюсь расширить класс GridView, чтобы всегда показывать верхний и нижний колонтитулы, даже когда источник данных пуст, используя код, который я нашел в Интернете ( ссылка ). Тем не менее, код написан на C #, но я использую VB.

Что VB эквивалентно следующему?

public event MustAddARowHandler MustAddARow;

Есть ли способ обойти VB.NET, не позволяя событиям возвращать тип?

Кроме того, я не могу преобразовать следующую функцию из-за ошибки ниже.

Код:

Protected Function OnMustAddARow(ByVal data As IEnumerable) As IEnumerable
    If MustAddARow = Nothing Then 'Error on MustAddARow'
        Throw New NullReferenceException("The datasource has no rows.  You " _
                                        & "must handle the 'MustAddARow' Event.")
    End If
    Return MustAddARow(data) 'Error on MustAddARow'
End Function

Ошибка: Открытое событие MustAddARow (data As System.Collections.IEnumerable) 'является событием и не может быть вызвано напрямую. Используйте оператор RaiseEvent, чтобы вызвать событие.

Ответы [ 3 ]

2 голосов
/ 12 апреля 2010

Примечание: Этот ответ на самом деле неверный. Виноват. Показанный синтаксис правильный (поэтому я не буду сразу удалять этот ответ), но он не будет компилироваться, поскольку событиям, которые обычно являются многоадресными делегатами, не разрешается возвращать значение в VB .NET.


Объявление события:

Public Event MustAddRow As MustAddRowHandler

Объявление типа делегата: (что является обязательным условием для вышеупомянутого)

Public Delegate Function MustAddRowHandler(ByVal data As IEnumerable) As IEnumerable
2 голосов
/ 12 апреля 2010

Как это:

Public Event MustAddRow(data As IEnumerable)
0 голосов
/ 30 апреля 2010

Как описано в ответе на мой другой пост ( ссылка ), я скомпилировал код C # в DLL, которую я использую в своем коде VB.

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