用户控件中的覆盖方法

时间:2012-03-29 07:39:25

标签: asp.net vb.net user-controls override

您好我有一个包含按钮的用户控件。我想在点击该按钮时过度自定义功能,如

 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

它没有在基类中找到该子。

3 个答案:

答案 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

MSDN: RaiseEvent

答案 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