Comment : créer des gestionnaires d'événements dans des pages Web ASP.NET (Visual Studio)
Mise à jour : novembre 2007
Lorsque vous modifiez une page Web ASP.NET dans Visual Studio, vous pouvez créer des gestionnaires d'événements serveur pour les contrôles et pour la page de diverses manières. Certaines de ces façons dépendent du langage de programmation dans lequel vous travaillez. Vous pouvez créer des gestionnaires à l'aide des fonctionnalités de Visual Web Developer, ou de façon déclarative, ou encore dans le code.
Remarque : |
---|
Vous pouvez également ajouter des événements au script client, qui s'exécutent lorsque le contrôle s'exécute dans le navigateur comme un élément de la page. Pour plus d'informations, consultez Comment : ajouter des événements de script client à des contrôles serveur Web ASP.NET. |
Si un contrôle prend en charge plusieurs événements, l'un d'eux est généralement configuré comme l'événement par défaut. Par exemple, pour le contrôle Button, l'événement par défaut est l'événement Click.
Création de gestionnaires d'événements dans Visual Web Developer
Pour créer un gestionnaire d'événements pour l'événement par défaut
En mode Design, double-cliquez sur la page ou sur le contrôle pour lequel vous souhaitez créer un gestionnaire d'événements par défaut.
Visual Web Developer crée un gestionnaire pour l'événement par défaut et ouvre l'éditeur de code avec le point d'insertion dans le gestionnaire d'événements.
Pour créer un gestionnaire d'événements dans la fenêtre Propriétés
En mode Design, sélectionnez le contrôle pour lequel vous souhaitez créer un gestionnaire d'événements.
Remarque : Vous ne pouvez pas sélectionner la page en mode Design. Vous ne pouvez donc pas créer d'événement au niveau de la page en suivant cette procédure. Utilisez plutôt la procédure précédente.
Dans Propriétés, cliquez sur le symbole d'événements .
La fenêtre Propriétés affiche une liste d'événements pour le contrôle sélectionné.
Dans la zone qui suit un nom d'événement, effectuez l'une des opérations suivantes :
Double-cliquez pour créer un nouveau gestionnaire d'événements pour cet événement. Le concepteur nommera le gestionnaire selon la convention controlID_event.
Entrez le nom du gestionnaire à créer.
Dans la liste déroulante, sélectionnez le nom d'un gestionnaire existant.
La liste déroulante affiche les méthodes dont la signature est correcte pour l'événement.
Lorsque vous avez terminé, Visual Web Developer bascule vers l'éditeur de code et place le point d'insertion dans le gestionnaire.
Pour créer un gestionnaire d'événements dans l'éditeur de code
Basculez vers l'éditeur de code en utilisant l'une des techniques suivantes :
Pour une page Web à fichier unique, basculez en mode Source.
Pour une page code-behind, dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom de la page, puis cliquez sur Afficher le code.
Remarque : Dans les pages code-behind qui utilisent C#, cette technique ne fonctionnera pas car, à la dernière étape, le nom du contrôle n'apparaîtra pas dans la liste déroulante. Utilisez plutôt l'une des autres procédures.
En haut de la fenêtre de l'éditeur de code, sélectionnez le contrôle dans la liste déroulante située sur le côté gauche, puis sélectionnez l'événement dans la liste déroulante du côté droit.
Remarque : Les événements pour lesquels des méthodes existent déjà apparaissent en gras.
Création de gestionnaires d'événements de façon déclarative
Lorsque vous utilisez Visual Web Developer pour créer un gestionnaire, Visual Web Developer crée un squelette de gestionnaire et configure le contrôle pour qu'il appelle le gestionnaire. Vous pouvez faire de même sans utiliser Visual Web Developer.
Pour créer un gestionnaire d'événements de page
Dans l'éditeur de code, créez une méthode avec le nom Page_event.
Par exemple, pour créer un gestionnaire de l'événement Load de la page, créez une méthode nommée Page_Load.
Remarque : Les gestionnaires d'événements de page ne sont pas contraints de prendre des paramètres, contrairement à d'autres gestionnaires d'événements de contrôles.
Les pages ASP.NET lient automatiquement des événements de page à des méthodes nommées Page_event. Cette liaison automatique est configurée par l'attribut AutoEventWireup dans la directive @ Page, dont la valeur par défaut est true. Si vous affectez à AutoEventWireup la valeur false, la page ne recherche pas automatiquement les méthodes qui utilisent la convention d'affectation de noms Page_event.
L'exemple de code ci-dessous montre un gestionnaire de l'événement Load de la page.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Page.IsPostBack Then Response.Write("<br>Page has been posted back.") End If End Sub
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { Response.Write("<br>Page has been posted back."); } }
Pour ajouter un gestionnaire de contrôle de façon déclarative
Dans l'éditeur de code, créez une méthode de gestion d'événements avec la signature appropriée.
La méthode peut recevoir le nom de votre choix.
Dans le balisage du contrôle, utilisez les attributs nommés On<nom événement> pour raccorder le gestionnaire d'événements. Utilisez le nom de la méthode du gestionnaire d'événements comme valeur.
L'exemple de code suivant montre le balisage d'un contrôle TextBox pour lequel l'événement TextChanged est lié à la méthode de gestionnaire d'événements nommée NameChange :
Note de sécurité : Cet exemple comporte une zone de texte qui accepte l'entrée d'utilisateur, ce qui constitue une menace éventuelle pour la sécurité. Par défaut, les pages Web ASP.NET vérifient que les entrées d'utilisateur n'incluent pas de script ou d'éléments HTML. Pour plus d'informations, consultez Vue d'ensemble des attaques de script.
Protected Sub NameChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles textbox1.TextChanged 'Sub for the OnTextChanged event End Sub
<asp:TextBox ID="textbox1" Runat="server" Text="" OnTextChanged="NameChange" />
Ajoutez à votre code la méthode d'événement suivante : Par exemple, l'exemple de code suivant montre le code de la méthode de gestionnaire d'événements nommée NameChange :
protected void NameChange(object sender, EventArgs e) { //Method for the OnTextChanged event. }
Pour ajouter implicitement un gestionnaire d'événements en Visual Basic
Dans l'éditeur de code, créez une méthode de gestion d'événements avec la signature appropriée.
La méthode peut recevoir le nom de votre choix.
Utilisez le mot clé Handles, en spécifiant le contrôle et l'événement auxquels la méthode doit être liée.
L'exemple de code suivant montre un gestionnaire d'événements pour l'événement Click d'un bouton nommé SampleButton. La méthode de cet exemple est nommée Clicked.
Protected Sub SampleButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles SampleButton.Click ' Code goes here. End Sub
Remarque : Si vous utilisez le mot clé Handles, n'incluez pas d'attribut d'événement dans le balisage du contrôle. Sinon, le gestionnaire sera appelé deux fois.
Si la méthode gère plusieurs événements, ajoutez le nom des événements supplémentaires à la clause Handles, séparés par une virgule.
L'exemple de code suivant montre une méthode qui gère l'événement Click pour plusieurs boutons. Dans le gestionnaire, le code teste l'argument sender pour savoir sur quel bouton l'utilisateur a cliqué.
Protected Sub AnyClicked(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Button1.Click, Button2.Click, Button3.Click Dim b As Button = CType(sender, Button) Response.Write("You clicked the button labeled " & b.ID) End Sub
Voir aussi
Tâches
Concepts
Vue d'ensemble des contrôles serveur Web ASP.NET