Переопределение методов в пользовательском контроле - PullRequest
3 голосов
/ 29 марта 2012

Привет, у меня есть пользовательский элемент управления, который содержит кнопку. Я хочу переместить пользовательскую функцию на нажатие этой кнопки, как

 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 ]

2 голосов
/ 29 марта 2012

Это потому, что страница не является дочерней по отношению к вашему 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 голос
/ 29 марта 2012

Вы не можете сделать это, потому что ваша страница не расширяет пользовательский контроль.Только в такой ситуации ваша реализация подойдет

0 голосов
/ 29 марта 2012

Вы не можете напрямую переопределить методы или свойства, если какой-то класс (например, Страница) не наследует Ваш пользовательский Класс (Контроль). Если хотите сделать некоторую функциональность на каком-то событии на странице или нажмите кнопку затем создать открытые методы в 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

Проверьте Программирование ASP.NET - Пользовательские и пользовательские элементы управления Обработка событий в разделе VB.NET .

MSDN - Вызов события - вы можете создать свой собственный аргумент события, содержащий некоторые данные, которые вы хотите передать через событие. например e.X

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...