您好我有一个包含按钮的用户控件。我想在点击该按钮时过度自定义功能,如
Protected Sub btnUploadSpreadSheet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUploadSpreadSheet.Click
MyMethod()
End Sub
Public Overridable Sub MyMethod()
' this i want to over ride
End Sub
并在我的页面中,当我试图过度骑行时,我已添加了我的控件
Protected Overrides Sub MyMethod ()
End Sub
它没有在基类中找到该子。
答案 0 :(得分:2)
那是因为该页面不是您UserControl
的子页面(您的页面不会继承该页面),无论如何这都是错误的方法。查找“Visual Basic中的继承”:http://msdn.microsoft.com/en-us/library/5x4yd9d5%28v=vs.90%29.aspx
您显然想要的是在页面中处理自定义UserControl的事件:
您的UserControl:
Class ExcelSheetUploader
Inherits UserControl
Public Event Uploaded(ctrl As ExcelSheetUploader)
Protected Sub btnUploadSpreadSheet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnUploadSpreadSheet.Click
RaiseEvent Uploaded(Me)
End Sub
End Class
现在您可以在页面中处理它:
Protected Sub ExcelSheetUploader_Uploaded(ctrl As ExcelSheetUploader) Handles ExcelSheetUploader1.Uploaded
' Do something .... '
End Sub
答案 1 :(得分:1)
您无法执行此操作,因为您的页面未扩展用户控件。只有在这种情况下,您的实施才适合
答案 2 :(得分:0)
如果是某个类,则无法直接覆盖方法或属性 (例如Page)不会继承您的自定义类(Control)。如果你想 在页面上的某些事件或按钮上执行某些功能然后单击 在UserControl上创建引发某些事件的公共方法 执行一些代码。
注意 - 必须遵循页面 - 生命周期。
查看可能有助于理解的这个小代码段。
Private Class MyControl
Inherits NavronChartControl.UserControls.MyControlBase
Protected Overrides Sub OnChartTypeChanged(chartType As UserControls.ChartType)
MyBase.OnChartTypeChanged(chartType)
End Sub
///Call this OnChartTypeChanged(...) using some method
/// Or Create your public methods for your functionality
End Class
///父控制方法
'OnChartTypeChanged is method that raise the event with argument
Protected Overridable Sub OnChartTypeChanged(chartType As ChartType)
'ChartTypeChang is an Event
RaiseEvent ChartTypeChanged(chartType)
End Sub
检查Programming ASP.NET- Custom and User Controls的处理VB.NET中的事件部分。
MSDN - Raising an Event - 您可以创建自己的自定义事件参数,该参数包含您希望通过事件传递的一些数据。例如e.X