VB等效的C#事件创建

时间:2010-04-12 19:44:20

标签: c# asp.net vb.net events

我正在尝试将GridView类扩展为始终显示页眉和页脚,即使数据源为空时也使用我在网上找到的代码(link)。但是,代码是用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 个答案:

答案 0 :(得分:2)

像这样:

Public Event MustAddRow(data As IEnumerable)

答案 1 :(得分:2)

注意:这个答案实际上是错误的。我的错。显示的语法是正确的(这就是为什么我不会立即删除此答案),但它不会编译,因为事件 - 通常是多播代理 - 不允许在VB中返回值.NET。


活动声明:

Public Event MustAddRow As MustAddRowHandler

委托类型声明:(这是上述的先决条件)

Public Delegate Function MustAddRowHandler(ByVal data As IEnumerable) As IEnumerable

答案 2 :(得分:0)

正如我在其他帖子(link)的答案中所描述的那样,我将C#代码编译成了一个DLL,我在VB代码中使用了这个代码。