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