VisualStudio2010/.NET4.0で開発しています。
やりたい事
・以下のVBのC#版を作りたい。
継承元のPage_Loadを実行させたい
Public Class Base
Inherits System.Web.UI.Page
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Write("親Page_Load")
End Sub
End Class
Public Class _Default
Inherits Base
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Response.Write("子Page_Load")
End Sub
End Class
上記のaspは実行すると画面上に「親Page_Load子Page_Load」と表示される。
だが、以下のプログラムでは「子Page」としか表示されないので困っております。
public class Base : System.Web.UI.Page
{
private void Page_Load(object sender, EventArgs e)
{
Response.Write("親Page");
}
}
public partial class _Default : Base
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("子Page");
}
}
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
Page_LoadメソッドをPageクラスのLoadイベントに紐付ける必要がある。
VBは、Handles Me.Load で紐付けている。
_defaultクラスは、default.aspxファイルの AutoEventWireup="true" により自動的に紐付けられる。
> public class Base : System.Web.UI.Page
こちらは、紐付けていないのでコンストラクタで明示的に書く必要がある。
this.Load += Page_Load;
--
個人的には、親クラスでOnLoadメソッドのオーバーライドがお勧め。
public partial class Base : System.Web.UI.Page
{
protected override void OnLoad(EventArgs e)
{
//Loadイベント発生前の処理をここに書く
base.OnLoad(e);
//Loadイベント発生後の処理をここに書く
}
}
ご回答ありがとうございます。
順序が子のPage_Loadから親のPage_Loadの順番にはなりましたが、
上記の方法で私の中の問題は解決しました。
ありがとうございました。
No.2
- 回答日時:
言語仕様の話かなぁ。
http://ufcpp.net/study/csharp/oo_inherit.html
上記ページの「基底クラスのメンバーの隠蔽」あたりがひっかかってる気がします。
VBはこのあたりの解釈が異なるのではないかと。
あと、ASP.NETの特にページの場合、その仕組みから継承をうまく利用するのはかなり難しいと思います。
複数のページで統一的な画面を作るのであれば、そのための仕組みとして用意されている
マスターページやユーザーコントロールをうまく使えないか考えてみたほうがいいと思います。
また、このプログラムは動作を確認するためのサンプルとしてResponse.Writeを
利用しているのでしょうが、通常のコントロールとResponse.Writeを組み合わせると
きっと意図していないHTMLが生成されるので、注意が必要です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) Excel VBAでの右クリックのポップアップメニューの非表示方法は? 1 2023/04/12 17:03
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス間でのデータ参照
-
範囲外の数値を代入したらエラ...
-
c++,ある関数のクラスから別の...
-
関数内の変数に<summary>コメン...
-
C++でfriendクラスにしているの...
-
C#にて別クラスの関数を使いたい
-
visual studioのデザイナ画面で...
-
import と extends について
-
(クラス名.this.メソッド)って...
-
Java リフレクションについて
-
ClassLoader.getSystemResource...
-
C#で処理中の状況をStatusLabel...
-
親クラスから子クラスへアクセス。
-
スーパークラスのコンストラク...
-
構造 他のクラスの構造体を別...
-
java-別クラスの変数の使い方を...
-
iアプリでの関数の計算について
-
C#のクラスライブラリでメッセ...
-
アブストラクトとインターフェ...
-
javaの配列について質問です。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
C#にて別クラスの関数を使いたい
-
c++,ある関数のクラスから別の...
-
親クラスから子クラスへアクセス。
-
C#でほかのファイルにある自作...
-
クラス間でのデータ参照
-
構造 他のクラスの構造体を別...
-
範囲外の数値を代入したらエラ...
-
ひとつのファイルにクラスは1つ?
-
C++でfriendクラスにしているの...
-
Java リフレクションについて
-
継承したクラス側のクラス名の取得
-
C# インターフェイスの実装
-
java-別クラスの変数の使い方を...
-
C#のクラスライブラリでメッセ...
-
visual studioのデザイナ画面で...
-
C# log4netの使い方
-
a href="..." とServlet
-
アップキャスト、ダウンキャス...
-
オブジェクトのデータをもとにX...
おすすめ情報