Freigeben über


Vergleich von zusammengesetzten Steuerelementen und Benutzersteuerelementen

Die folgende Tabelle enthält eine Zusammenfassung der Unterschiede zwischen zusammengesetzten Steuerelementen und Benutzersteuerelementen. Nähere Informationen zum Verfassen eines Benutzersteuerelements finden Sie unter Benutzersteuerelemente für Web Forms.

Zusammengesetztes Steuerelement Benutzersteuerelement
Minimale Entwurfszeitunterstützung beim Verfassen. Vollständige Entwurfszeitunterstützung beim Verfassen. Das Erstellen von Benutzersteuerelementen mit einem visuellen Designer entspricht dem Verfassen einer ASP.NET-Seite (Web Forms-Seite).
Programmgesteuertes Verfassen in einer objektorientierten Sprache, mit der die Common Language Runtime direkt angesprochen werden kann, wie z. B. C# oder Visual Basic .NET. Deklaratives Verfassen mit Hilfe von ASP.NET-Seitensyntax und Skriptblöcken (oder CodeBehind-Seiten).
Hinweis   Bei den zum Verfassen der Skriptblöcke verwendeten Sprachen handelt es sich um objektorientierte Sprachen, die die Common Language Runtime direkt ansprechen, wie z. B. C#, Visual Basic .NET und JScript .NET. Allerdings bleiben im ASP.NET-Seitenframework viele programmiertechnischen Details verborgen.
Wird als Assembly (.dll) kompiliert und weitergeführt. Wird als Textdatei mit der Erweiterung .ascx gespeichert (mit optionaler CodeBehind-Datei).
Gut geeignet zum Verfassen von generischen, neu verteilbaren Steuerelementen. Ausgerichtet auf anwendungsspezifische Funktionalität.
Vollständige Entwurfszeitunterstützung bei Verwendung in einem Entwurfszeithost. Ein zusammengesetztes Steuerelement kann zur Toolbox eines visuellen Designers hinzugefügt und anschließend per Drag & Drop auf eine Seite gezogen werden. Minimale Unterstützung für Verwendung in einem Designer.

Hinweis   Wenn Sie die Funktionalität eines einzelnen Steuerelements erweitern möchten, beispielsweise von Label, sollten Sie kein zusammengesetztes Steuerelement oder Benutzersteuerelement erstellen. In diesem Fall sollten Sie von Label ableiten (um die Vorzüge von Vererbung und Polymorphie nutzen zu können) und Member hinzufügen oder überschreiben. Wenn Sie ein Benutzersteuerelement (oder zusammengesetztes Steuerelement) erstellen, das nur aus einem Element (Label) besteht, verfügt dieses neue Steuerelement nicht mehr über das Objektmodell von Label. Daher sollten Sie nur dann ein Benutzersteuerelement (oder ein zusammengesetztes Steuerelement) erstellen, wenn Sie mehrere bereits bestehende Elemente kombinieren möchten.

Im nachfolgenden Beispiel wird ein Benutzersteuerelement vorgestellt, das dem im Abschnitt Beispiel für ein zusammengesetztes Serversteuerelement entwickelten zusammengesetzten Steuerelement entspricht. Das Benutzersteuerelement löst ein benutzerdefiniertes Ereignis namens Check aus. Der Ereignisdelegat CheckEventHandler und die Ereignisdatenklasse CheckEventArgs, die beide vom Check-Ereignis verwendet werden, werden im Beispiel für ein zusammengesetztes Serversteuerelement definiert.

<%-- UserControl.ascx. --%>
<%-- The namespace CustomControls has to be imported because it contains
 CheckEventArgs and CheckEventHandler.  --%>
<%@Import Namespace = "CustomControls" %> 
<script language="VB" runat=server>
   Private ReadOnly Property Sum() As Integer
      Get
         EnsureChildControls()
         Return Int32.Parse(box1.Text) + Int32.Parse(box2.Text)
      End Get
   End Property

   Public Number As Integer = 100

   Public Property Text() As String
      Get
         EnsureChildControls()
         Return label.Text
      End Get
      Set
         EnsureChildControls()
         label.Text = value
      End Set
   End Property

   Public Event Check As CheckEventHandler

   Protected Overridable Sub OnCheck(e As CheckEventArgs)
      RaiseEvent Check(Me, e)
   End Sub

   Private Sub Button_Clicked(sender As Object, e As EventArgs)
      OnCheck(New CheckEventArgs(Sum - Number))
   End Sub 
</script>
<h3>Enter a number :

<asp:TextBox id = box1 text = "0" runat = server />
</h3> <br>
<h3>Enter another number :
<asp:TextBox id = box2 text = "0" runat = server />
</h3> <br>       
<asp:Button id = button text = "Submit" OnClick = "Button_Clicked" runat = server />
<br> <br>
<asp:Label id = label text = "Click sumbit to  see if you won." 
height = 100 width = 400 runat = server />                     

Verwenden eines Benutzersteuerelements auf einer Seite

Im folgenden Beispiel wird das Benutzersteuerelement UserControl.ascx auf einer ASP.NET-Seite verwendet. Weitere Informationen finden Sie unter Verwenden eines Benutzersteuerelements in einer Web Forms-Seite.

<%@Import Namespace = "CustomControls" %>
<%@ Register TagPrefix="MyUserControl"  TagName = "MyControl" Src = "UserControl.ascx" %>
<script language="VB" runat=server>
   Private Sub Sum_Checked(sender As Object, e As CheckEventArgs)
      If e.Match = True Then
         control.Text = "<h2> You won a million dollars!!!! </h2>"
      Else
         control.Text = "Sorry, try again. The numbers you entered don't add up to" & _
               " the hidden number."
      End If
   End Sub 
</script>

<html>            
<body>
<h1> The mystery sum game </h1><br>             
<form runat=server>                        
<MyUserControl:MyControl id = "control" OnCheck = "Sum_Checked" Number = "10" runat = server/>                                                   
</form>                                               
</body>                                         
</html>

Siehe auch

Beispiel für ein zusammengesetztes Serversteuerelement | Vergleich von Komposition und Wiedergabe