【问题标题】:How to hook up ClickI() event for ImageButton in code behind ASP.NET如何在 ASP.NET 后面的代码中为 ImageButton 连接 ClickI() 事件
【发布时间】:2013-10-06 13:24:25
【问题描述】:

我正在制作的自定义控件中有一个 ImageButton 实例变量。对于如何简单地为其单击事件设置它的事件处理程序,我有点犹豫。来自 C#,我有点困惑,因为这是在 VB.NET 中。

截图:

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 函数不感兴趣。

【问题讨论】:

标签: asp.net vb.net


【解决方案1】:

您只需添加委托:

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

【讨论】:

  • 啊……如此接近……但到目前为止。当它允许我这样做时会接受它。谢谢。
【解决方案2】:

您需要为点击事件分配一个处理程序:

AddHandler ctrlCloseImage.Click, AddressOf testSub

这将分配Click控制地址testSub的处理程序

【讨论】:

    【解决方案3】:

    这应该可以解决问题(只需将方法的名称放在 AddressOf 之后):

    AddHandler ctrlCloseImage.Click, AddressOf testSub
    

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 2017-05-18
      • 1970-01-01
      • 2012-08-23
      • 2014-05-10
      • 2013-09-02
      • 2014-08-01
      • 2014-05-09
      • 2010-10-17
      相关资源
      最近更新 更多