这是我的情况。我有一个 gridview (gridview1),每行嵌套一个自定义用户控件 (UC1)。自定义用户控件有一个名为“TaskChanged”的自定义公共事件,当单击按钮时会引发该事件。在父页面(default.aspx)上,我试图访问用户控件以将事件处理程序附加到,但我没有成功。这就是我正在尝试的方法。
在父页面上:
Protected Sub GridViewTasks_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridViewTasks.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
'Get the User Control
Dim Uc As UserControl = e.Row.FindControl("TaskResourceAssignment")
'Attatch event handler
AddHandler Uc.TaskChanged, AddressOf Uc_OnTaskChanged
End If
End Sub
问题是在这条线上:
AddHandler Uc.TaskChanged, AddressOf Uc_OnTaskChanged
它找不到控件的“TaskChanged”事件(Uc.TaskChanged 得到它下面的波浪线),运行页面只会抛出错误。我记得一个朋友能够做到这一点,但他将他的用户控件转换为一个对象并且能够访问它。我试过没有运气。
自定义控件正在引发事件而不是冒泡事件。我可以通过冒泡事件来让它工作,但我真的很想通过将事件处理程序附加到控件来做到这一点。帮助任何人??