我有一个usercontrol,其中包含3个按钮和7个文本框。我使用LoadControl在webform中动态调用该usercontrol。
但我的问题是
1.如何知道在我的页面上点击了哪个(用户控件的)按钮?
2.如何举起这些活动?
由于 Kavitha
答案 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事件。