2010-11-21 13 views
2

現在、私のコードはこのようになります。これは論理的な継承パスに従うように表示されませんのでしかし、私は、本当にここから続行するかどうかはわかりませんASP.NETで標準のWebサーバーコントロールの機能を拡張する最適な方法は何ですか?

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CustomPanel.ascx.cs" 
CodeFile="CustomPanel.ascx.cs" CodeFileBaseClass="System.Web.UI.WebControls.Panel" 
Inherits="MyProject.CustomPanel" %> 

...

namespace MyProject 
{ public partial class CustomPanel : System.Web.UI.WebControls.Panel 
    { ... } 
} 

含まれていますSystem.Web.UI.UserControl

私は何か間違っていますか? Panelを継承し、PreInitなどの標準イベントハンドラを拡張するにはどうすればよいですか?

答えて

1

あなたは拡張したりがここPanelをカプセル化に欠けていますか?

ユーザーコントロールではなく、通常のクラスファイルで拡張され、クラスはPanelから継承されます。

これをカプセル化することは、ここで行ったようにユーザーコントロールで行われます。そのような場合、PanelインスタンスをUser Controlのascxファイルに入れます。そのインスタンスから継承しようとはしません。

実際には、両方を同時に実行しようとしているようです。あなたはそれをしてはいけません。 UsercontrolとPanelの両方が含まれていると思われるような直接継承パスはありません。上記のオプションのいずれかを選択する必要があります。

0

これを拡張するには、System.Web.UI.WebControls.Panelクラスを継承する新しいクラスを作成する必要があります。カスタムクラスを作成したら、VirtualとマークされているPanelクラスから既存のメソッドを上書きできます。 (Visual Studioでキーワードの上書きをクラス内に入力すると、仮想メソッドのリストが表示されます)

関連する問題