- - PR -
カスタムコントロールの継承
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-12-01 13:52
いつもお世話になっております。
現在ASP.NETカスタムコントロールを作成しています。 継承に関して教えて下さい。 基本クラス(Webcontrolを継承)で内でprivateのボタンを作成し、 イベント(private)をハンドリングしています。 この基本クラスを継承した派生クラスを作り、 このクラス内では、新たにボタンを作成し、 イベントをハンドリングしています。 この派生クラスをWebFormで使用しているのですが、 基本クラス内のボタンのイベントが発生しません。 派生クラス内のボタンのイベントは発生します。 やりたいことは、基本クラス内にあるボタンのイベントは、 基本クラス内で処理し、派生クラスは一切関与しないようにしたいのですが... こういう方法はむりなのでしょうか? ご教授下さい。 | ||||
|
投稿日時: 2004-12-01 14:31
以下に、ソースを載せます。
public abstract class HeaderBase : System.Web.UI.WebControls.WebControl { private ImageButton _btnClose = new ImageButton(); public HeaderBase() : base() { } private void PageHeader_Close(object sender, ImageClickEventArgs e) { //このイベントで処理を記述したい。 //現状、このイベントが発生してくれない。 } protected override void CreateChildControls() { //イベントに追加 _btnClose.Click += new ImageClickEventHandler(PageHeader_Close); base.Controls.Add(_btnClose); } protected override void Render(HtmlTextWriter output) { base.Render(output); } } このクラスを継承した派生クラスを実際には使用しています。 基本クラス内のイベントが発生しません。 何か方法はないでしょうか? お願いします。 | ||||
|
投稿日時: 2004-12-01 18:11
System.Web.UI.INamingContainer
を調べてみてください。 | ||||
|
投稿日時: 2004-12-01 18:23
ちょっと不親切でしたね。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpcondevelopingcompositecontrols.asp こちらが参考になると思います。 あと、翔泳社の.NETマガジンの11月頭に発行されたものに 複合コントロールのサンプルがあったと思います。(VB.NETですが・・・) | ||||
|
投稿日時: 2004-12-01 21:32
有り難う御座います、解決です。
なるほど、そう言うことなんですね。 ちなみに、このような実装方法は正しいのでしょうか? ベースとなるコントロールを継承して使う、 もしくは、ベースとなるコントロールを作成し、 そのコントロールに子コントロールを追加する。 どちらが正しいのでしょうか。 | ||||
|
投稿日時: 2004-12-01 22:04
仰っている事の意図していることが ちょっと私にはわかりかねます。申し訳ございません。 でも、何が正しいかは目的によって変わると思いますし、 提示された情報からは一概には言えないでしょう。 完全な正解というものもないと思います。 カスタムコントロールに限らず、 MSDNにおいて設計や実装に関するガイドラインが 豊富に提供されておりますので、 私はそれを参考にするようにしています。 | ||||
1
