Contrôle composite et contrôle utilisateur
Le tableau suivant résume les différences entre les contrôles composites et les contrôles utilisateur. Pour plus d'informations sur la création d'un contrôle utilisateur, consultez Contrôles utilisateur Web Forms.
Contrôle composite | Contrôle utilisateur |
---|---|
Prise en charge minimale au moment du design pour la création. | Prise en charge complète au moment du design pour la création. La création d'un contrôle utilisateur dans un concepteur visuel est identique à la création d'une page ASP.NET (page Web Forms). |
Créé par programme dans un langage de programmation orienté objet ciblant le Common Language Runtime, notamment C# ou Visual Basic .NET. | Créé par déclaration à l'aide de la syntaxe de page ASP.NET et de blocs de script (ou de pages code-behind).
Remarque Les langages utilisés pour la création des blocs de script sont des langages orientés objet ciblant le Common Language Runtime, tels que C#, Visual Basic .NET et JScript .NET. Toutefois, l'infrastructure de page ASP.NET empêche le développeur de voir de nombreux détails de programmation. |
Compilé et persistant sous la forme d'un assembly (.dll). | Enregistré sous la forme d'un fichier texte avec une extension .ascx (avec un fichier code-behind facultatif). |
Bien adapté à la création de contrôles génériques redistribuables. | Axé sur des fonctionnalités propres à une application. |
Prise en charge complète au moment du design lorsqu'il est utilisé dans un hôte de design. Un contrôle composite peut être ajouté à la boîte à outils d'un concepteur visuel et faire l'objet d'un glisser-déplacer jusqu'à une page. | Prise en charge minimale pour une utilisation dans un concepteur. |
Remarque Si vous souhaitez étendre les fonctionnalités d'un contrôle, par exemple, Label, ne créez pas de contrôle composite ou de contrôle utilisateur. Vous devez plutôt dériver de Label (pour bénéficier des avantages offerts par l'héritage et le polymorphisme), puis ajouter ou substituer des membres. Si vous créez un contrôle utilisateur (ou un contrôle composite) qui ne contient qu'un seul contrôle, Label, votre nouveau contrôle n'a plus le modèle objet de Label. Vous ne devez créer un contrôle utilisateur (ou un contrôle composite) que lorsque vous souhaitez combiner plusieurs contrôles existants.
L'exemple suivant montre un contrôle utilisateur qui équivaut au contrôle composite développé dans l'exemple de contrôle serveur composite. Le contrôle utilisateur déclenche un événement personnalisé nommé Check
. Le délégué d'événement CheckEventHandler
et la classe de données d'événement CheckEventArgs
, qui sont utilisés par l'événement Check
, sont définis dans l'exemple de contrôle serveur composite.
<%-- 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 />
Utilisation d'un contrôle utilisateur sur une page
La page suivante utilise le contrôle utilisateur UserControl.ascx
sur une page ASP.NET. Pour plus d'informations, consultez Insertion d'un contrôle utilisateur dans une page Web Forms.
<%@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>
Voir aussi
Exemple de contrôle serveur composite | Composition et rendu