2

作成中のカスタム コントロールに ImageButton インスタンス変数があります。click event のイベントハンドラーを簡単に設定する方法については、少し不安定です。これはVB.NETにあるため、C#から来て、少し混乱しています。

をちょきちょきと切る:

Dim ctrlCloseImage As ImageButton = New ImageButton()
    With ctrlCloseImage
        .ID = "imgClose"
        .ImageUrl = "~/Web/Images/close.gif"
        .ToolTip = "Close"
        .CssClass = "popup_close_img"
        'This is where I left off
        AddHandler ctrlCloseImage.Click, AddressOf testSub(ctrlCloseImage, ??)
    End With
Me._ctrlCloseImage = ctrlCloseImage

その後:

Protected Sub testSub(ByVal Sender As Object, ByVal e As ImageClickEventArgs)
    Me.Page.Response.Write("Yay, you clicked the image button!")
End Sub

助けてくれてありがとう。重要なコードスニップが不足している場合はお知らせください。繰り返しますが、これをサーバー側で起動したいのですが、ここで JavaScript 関数を起動することに興味はありません。

4

3 に答える 3

6

デリゲートを追加するだけです:

AddHandler ctrlCloseImage.Click, AddressOf testSub 

ここではイベントがトリガーされないため、引数を渡すことはできません。

ただし、コントロールを動的に作成する必要がない場合 (通常は不要です)、イベントを aspx に登録するか、Handles(C# とは対照的に) 句を使用して登録できます。

Protected Sub testSub(ByVal Sender As Object, ByVal e As ImageClickEventArgs) _
    Handles ctrlCloseImage.Click
    Me.Page.Response.Write("Yay, you clicked the image button!")
End Sub
于 2013-09-30T15:43:26.523 に答える
0

クリック イベントにハンドラを割り当てる必要があります。

AddHandler ctrlCloseImage.Click, AddressOf testSub

Clickこれにより、コントロールにアドレスのハンドラーが割り当てられますtestSub

于 2013-09-30T15:43:58.357 に答える
0

これでうまくいくはずです (メソッドの名前を AddressOf の後に置くだけです)。

AddHandler ctrlCloseImage.Click, AddressOf testSub
于 2013-09-30T15:45:11.860 に答える