webform中的UserControl事件

时间:2009-04-30 10:52:18

标签: .net asp.net

我有一个usercontrol,其中包含3个按钮和7个文本框。我使用LoadControl在webform中动态调用该usercontrol。

但我的问题是

1.如何知道在我的页面上点击了哪个(用户控件的)按钮?

2.如何举起这些活动?

由于 Kavitha

4 个答案:

答案 0 :(得分:2)

在用户控件中创建事件,并在单击按钮时触发它。因此,您可以从主页面管理此事件。

有关详细信息,请查看Easily Raise Events From ASP.NET ASCX User Controls

答案 1 :(得分:1)

在您的用户控件(WebUserControl1.ascx)中,您可能有一个带有点击处理程序的Button1,其行为如下:

Event Button1Click(ByVal button As Button)

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
  RaiseEvent Button1Click(sender)
End Sub

然后,您可以在父控件中动态附加EventHandler,如下所示:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim buttonControl As WebUserControl1 = LoadControl("WebUserControl1.ascx")
    AddHandler buttonControl.Button1Click, AddressOf ControlEventHandler
End Sub

Private Sub ControlEventHandler(ByVal ctl As Control)
    'We now have access to this control's properties
End Sub

答案 2 :(得分:0)

您可以在自己的代码隐藏文件中处理usercontrol上的控件事件,并在您的usercontrol上引发事件,而这些事件又可以由您的页面的代码隐藏文件处理。

答案 3 :(得分:0)

最好的办法是让用户控件将控件封装在其中,然后让它引发一个有意义的事件。例如,我编写了一个日期选择器用户控件,它具有一个RadioButtonList,可以在“过去12个月”,“年初至今”或“自定义日期”之间进行选择,还可以开始日期和结束日期文本框。我的用户控件公开一个DateChanged事件,如果选择了新的单选按钮,或者如果选择了“自定义”并且输入日期发生了更改,则会引发该事件。

这样,控件的用户不需要知道控件的复杂实现。它只是订阅了DateChanged事件。