2012-03-29 7 views
3

こんにちは私は、ボタンを含むユーザーコントロールを持っています。私はオーバーユーザーコントロール内のオーバーリッピングメソッド

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 

それはそのサブを見つけていないしようとしたとき、私は私のコントロールを追加した、私のページにそのボタンのクリック時にカスタム関数を乗りたいですベースクラスでは

答えて

2

これはページがあなたのUserControlの子ではない(あなたのページはそれを継承しないからです)とにかくこれは間違ったアプローチです。何が明らかにしたいことは、あなたのページでカスタムユーザーコントロールのイベントを処理することですhttp://msdn.microsoft.com/en-us/library/5x4yd9d5%28v=vs.90%29.aspx

あなたの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 

今、あなたはあなたにそれを処理することができ、「Visual Basicでの継承」を見上げてページ:

Protected Sub ExcelSheetUploader_Uploaded(ctrl As ExcelSheetUploader) Handles ExcelSheetUploader1.Uploaded 
    ' Do something .... ' 
End Sub 

MSDN: RaiseEvent

+0

よりも効果がありましたが、私の主張はデータセットを渡してこのメ​​ソッドに入りたいのです 保護されたサブExcelSheetUploader_Uploaded(ExcelSheetUploaderとしてctrl)ExcelSheetUploader1.Uploadedを処理します 'Do something .... ' End Sub –

+1

その後、DataSet型のUserControlにパブリックプロパティを追加します。次に、このプロパティを取得または設定できます。しかし、それはポストバックを生き残ることはできませんことを念頭に置く。 –

+0

それは愚かな質問だった:)私は実際にあなたに感謝しました:) –

1

ページがユーザーコントロールを拡張していないため、これを行うことはできません。このような状況でのみ、あなたの実装は適切でしょう

+0

次に、ボタンクリックイベントでオーバーライドを実装するにはどうすればよいですか?または機能を達成するための他の方法はありますか? –

+1

あなたは自分のイベントを実装することができます。例えば – ionden

0

いくつかのクラスがある場合は、メソッドやプロパティを直接オーバーライドすることはできません。 (例:ページ)はカスタムクラス(コントロール)を継承しません。 いくつかのイベントをページまたはボタンでクリックする場合は、 イベントを発生させる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 

VB.NETセクションでProgramming ASP.NET- Custom and User Controlsイベント処理を確認してください。

MSDN - Raising an Event - イベントを渡すデータを保持する独自のカスタムイベント引数を作成できます。例えばe.X

関連する問題