0

一部のクラスを からC#に変換していますVB.NETが、この行を正しく変換できません。いくつかのオンライン コンバーターを試しましたが、うまくいかないようです。

this.mGrid.RowDataBound += new GridViewRowEventHandler(RowDataBoundHandler);

変換VB.NETしても動かない。

Me.mGrid.RowDataBound += New GridViewRowEventHandler(RowDataBoundHandler)

以下は、そこから得られる2つのエラーです。私の脳が死んでしまったので、誰か助けてくれませんか。

ありがとう、

Error 4 Delegate 'System.Web.UI.WebControls.GridViewRowEventHandler' requires an 'AddressOf' expression or lambda expression as the only argument to its constructor. C:\My Projects\PMS\App_Code\GridViewHelper.vb 110 62 C:\My Projects\PMS\

Error 3 'Public Event RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event. C:\My Projects\PMS\App_Code\GridViewHelper.vb 110 9 C:\My Projects\PMS\

4

3 に答える 3

6

VB.NET でプログラムによってイベント ハンドラーを登録する必要はありません。aspx マークアップを使用して event handler( OnRowDataBound = "RowDataBoundHandler") を宣言するか、Handlesを使用できます。コンマで区切って、複数のコントロールに 1 つを使用することもできます。

Protected Sub GridView1_RowDataBound(sender As Object, e As GridViewRowEventArgs) _
    Handles GridView1.RowDataBound
End Sub

とにかく手動で追加したい場合は、次を使用しますAddHandler

AddHandler Me.GridView1.RowDataBound, AddressOf RowDataBoundHandler
于 2013-01-29T16:42:57.233 に答える
3

代わりにこれを使用してください。これは、これを行う VB の方法です。VB は AddHandler を使用してイベントを識別し、AddressOf はデリゲートを指します。

AddHandler mGrid.RowDataBound, AddressOf RowDataBoundHandler
于 2013-01-29T16:41:34.673 に答える
3

AddHandlerイベントを手動でバインドする場合は、次を使用してみてください。

AddHandler Me.mGrid.RowDataBound, AddressOf RowDataBoundHandler

または、ASPX マークアップでイベントをバインドできます。

<asp:GridView ... RowDataBound="RowDataBoundHandler" runat="server" />

または、Tim Schmelter のアプローチを使用します。

于 2013-01-29T16:41:23.490 に答える