2010-11-21 5 views
2

Derzeit ähnelt mein Code:Was ist die beste Methode zum Erweitern der Funktionalität eines Standard-Webserversteuerelements in ASP.NET? diese

<%@ 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 
    { ... } 
} 

Aber ich bin wirklich nicht sicher, wie man von hier zu gehen, denn dies ist nicht einem logischen Vererbungspfad zu folgen scheint das schließt ein System.Web.UI.UserControl

Mache ich etwas falsch? Wie kann ich Panel erben und Standard-Event-Handler wie PreInit erweitern?

Antwort

1

Sind Sie wollen zu erweitern oder kapseln eine Panel hier?

Die Erweiterung würde nicht mit einem Benutzersteuerelement erfolgen, sondern mit einer normalen Klassendatei, wobei die Klasse von Panel erbt.

Das Einkapseln würde in einer Benutzersteuerung erfolgen, wie es scheint, was Sie hier getan haben; In diesem Fall fügen Sie eine Panel Instanz in die ascx-Datei des Benutzersteuerelements ein ... Sie versuchen nicht, davon zu erben.

Es sieht tatsächlich so aus, als würden Sie beides gleichzeitig tun; Du solltest das nicht tun. Es gibt keinen direkten Vererbungspfad, den Sie zu suchen scheinen, der sowohl Usercontrol als auch Panel enthält; Sie müssen eine der oben genannten Optionen oder die andere wählen.

0

Um es zu erweitern, sollten Sie eine neue Klasse erstellen, die die System.Web.UI.WebControls.Panel-Klasse erbt. Nachdem Sie Ihre benutzerdefinierte Klasse erstellt haben, können Sie vorhandene Methoden aus der Panel-Klasse überschreiben, die als virtuell markiert sind. (Wenn Sie in Visual Studio die Schlüsselwortüberschreibung eingeben, wird innerhalb der Klasse eine Liste mit virtuellen Methoden angezeigt.)

Verwandte Themen