Composite Control vs Web-Benutzersteuerelement

Ein Composite Control wird aus mehreren bestehenden Controls zusammengesetzt. Oberklasse ist System.Web.UI.Control. In diesem Fall muss der Entwickler die Methode CreateChildControls() überschreiben und dort die beteiligten Steuerelemente der Controls-Collection hinzufügen. Ein Composite Control ist einem User Control sehr ähnlich. Neben dem Unterschied, dass das Composite Control in Form einer Assembly (dll) und das User Control in Form einer Quellcodedatei (ascx) verbreitet wird, besteht der Unterschied darin, dass das User Control leichter zu erstellen ist. Dagegen bietet aber das Composite Control dem späteren Nutzer mehr Vorteile als ein User Control.

Ein Beispiel von Composite Control (vb), der aus einer Tabelle und einem Label mit Text "Hallo" besteht:

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls

<ToolboxData("<{0}:myCompositeControl runat=server></{0}:myCompositeControl>")> _
Public Class SonderTable
    Inherits CompositeControl

    Private tb As New Table
    Private tr As New TableRow
    Private tc As New TableCell
    Private lbl As New Label

Protected Overrides Sub CreateChildControls()
        Me.tb = New Table
        Me.tb.CellPadding = 0
        Me.tb.CellSpacing = 0
        Me.tb.BorderWidth = 0
        Me.tb.Width = "366"

        Me.tr = New TableRow
        Me.tc = New TableCell

        Me.lbl = New Label
        Me.lbl.Font.Bold = True
        Me.lbl.Text = "Hallo"

        Me.tc.Controls.Add(Me.lbl)
        Me.tr.Controls.Add(Me.tc)
        Me.tb.Controls.Add(Me.tr)

        Me.Controls.Add(Me.tb)
    End Sub

End Class