1

ASP.NET フォームにプレースホルダーがあり、複数のソースからテーブルを作成するカスタム クラスがあり、そのカスタム クラス ボタンがテーブルに動的に追加されます。

私のコード ビハインド (FormView へのデータ バインディング) を除いて、すべて問題ありません。イベントを接続する方法がわかりません。

私のカスタムクラスには、次のものがあります。

Dim Objective_addBtn As Button = New Button
Objective_addBtn.ID = 'I dynamically set the ID here
AddHandler Objective_addBtn.Click, AddressOf AddRow

私のカスタムクラスには、次のものがあります。

Public Event AddNewRow As EventHandler

Private Sub AddRow(sender As Button, e As EventArgs)

    Select Case True
        Case sender.ID.Contains("ProblemBtn")

        Case sender.ID.Contains("GoalBtn")

        Case sender.ID.Contains("ObjectiveBtn")

            RaiseEvent AddNewRow(Me, EventArgs.Empty)

        Case sender.ID.Contains("TaskBtn")

        Case Else
            'Do Nothing - Should Not be here!
    End Select
End Sub

RaiseEvent のコード ブロックに到達していることを確認しましたが、コード ビハインドでそのイベントをキャプチャする方法がわかりません。

私の現在の分離コード:

Partial Class <mypage>
Inherits System.Web.UI.Page

Private WithEvents CustomClass As New CustomClass

    Protected Sub Page_Load(ByVal sender as object, e as EventArgs) Handled Me.Load
        CustomClass = New CustomClass(Request.QueryString("pid"), Request.QueryString("sid"))

        AddHandler CustomClass.AddNewRow, AddressOf NewRow
    End Sub
End Class

最後に、コード ビハインドにも次のものがあります。

Protected Sub NewRow(ByVal sender As Object, e As EventArgs) Handles CustomClass.AddNewRow
    MsgBox("NewRow Test")
End Sub

NewRow が起動されることはなく、MsgBox テストが表示されることもありません。また、段階的にデバッグすると、NewRow サブルーチンが入力されないことが確認されます。

4

1 に答える 1