Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Déclenche un événement déclaré au niveau du module au sein d’une classe, d’un formulaire ou d’un document.
RaiseEvent eventname[( argumentlist )]
eventname
Obligatoire. Nom de l’événement à déclencher.
argumentlist
Optionnel. Liste délimitée par des virgules de variables, de tableaux ou d’expressions. L’argument argumentlist
doit être placé entre parenthèses. S’il n’existe aucun argument, les parenthèses doivent être omises.
Le nom requis eventname
est le nom d’un événement déclaré dans le module. Il suit les conventions d’affectation de noms des variables Visual Basic.
Si l’événement n’a pas été déclaré au sein du module dans lequel il est déclenché, une erreur se produit. Le fragment de code suivant illustre une déclaration d’événement et une procédure dans laquelle l’événement est déclenché.
' Declare an event at module level.
Event LogonCompleted(ByVal UserName As String)
Sub Logon(ByVal UserName As String)
' Raise the event.
RaiseEvent LogonCompleted(UserName)
End Sub
Vous ne pouvez pas utiliser RaiseEvent
pour déclencher des événements qui ne sont pas explicitement déclarés dans le module. Par exemple, tous les formulaires héritent d’un Click événement , System.Windows.Forms.Formil ne peut pas être déclenché à l’aide RaiseEvent
d’un formulaire dérivé. Si vous déclarez un Click
événement dans le module de formulaire, il ombre l’événement du Click formulaire. Vous pouvez toujours appeler l’événement du Click formulaire en appelant la OnClick méthode.
Par défaut, un événement défini dans Visual Basic déclenche ses gestionnaires d’événements dans l’ordre dans lequel les connexions sont établies. Étant donné que les événements peuvent avoir ByRef
des paramètres, un processus qui se connecte en retard peut recevoir des paramètres qui ont été modifiés par un gestionnaire d’événements antérieur. Une fois les gestionnaires d’événements exécutés, le contrôle est retourné à la sous-routine qui a déclenché l’événement.
Notes
Les événements non partagés ne doivent pas être déclenchés dans le constructeur de la classe dans laquelle ils sont déclarés. Bien que ces événements ne provoquent pas d’erreurs d’exécution, ils peuvent ne pas être interceptés par les gestionnaires d’événements associés. Utilisez le Shared
modificateur pour créer un événement partagé si vous devez déclencher un événement à partir d’un constructeur.
Notes
Vous pouvez modifier le comportement par défaut des événements en définissant un événement personnalisé. Pour les événements personnalisés, l’instruction RaiseEvent
appelle l’accesseur de l’événement RaiseEvent
. Pour plus d’informations sur les événements personnalisés, consultez l’instruction Event.
L’exemple suivant utilise des événements pour compter les secondes de 10 à 0. Le code illustre plusieurs méthodes, propriétés et instructions liées à l’événement, y compris l’instruction RaiseEvent
.
La classe qui déclenche un événement est la source d’événement et les méthodes qui traitent l’événement sont les gestionnaires d’événements. Une source d’événement peut avoir plusieurs gestionnaires pour les événements qu’elle génère. Lorsque la classe déclenche l’événement, cet événement est déclenché sur chaque classe qui a choisi de gérer les événements pour cette instance de l’objet.
L’exemple illustre un minuteur qui compte entre 10 et 0 secondes et affiche la progression vers la console. Une fois le compte à rebours terminé, il affiche « Terminé ».
Déclarez une WithEvents
variable dans votre classe pour gérer les événements à partir du minuteur :
Public Class TimerExample
Private WithEvents mTimer As TimerState
Ajoutez le code suivant pour implémenter les gestionnaires d’événements et la logique du minuteur. Cet exemple montre comment utiliser l’instruction RaiseEvent
pour notifier les gestionnaires d’événements lorsque le minuteur met à jour ou se termine.
Public Sub StartCountdownExample()
mTimer = New TimerState()
mTimer.StartCountdown(10.0, 1.0)
End Sub
Private Sub mTimer_UpdateTime(ByVal Countdown As Double) Handles mTimer.UpdateTime
Console.WriteLine("Time remaining: " & Format(Countdown, "##0.0") & " seconds")
End Sub
Private Sub mTimer_Finished() Handles mTimer.Finished
Console.WriteLine("Done")
End Sub
End Class
Public Class TimerState
Public Event UpdateTime(ByVal Countdown As Double)
Public Event Finished()
Public Sub StartCountdown(ByVal Duration As Double,
ByVal Increment As Double)
Dim SoFar As Double = 0
Do While SoFar < Duration
System.Threading.Thread.Sleep(CInt(Increment * 1000))
SoFar += Increment
RaiseEvent UpdateTime(Duration - SoFar)
Loop
RaiseEvent Finished()
End Sub
End Class
Lorsque vous exécutez l’exemple précédent, il commence à compter les secondes comprises entre 10 et 0, affichant la progression vers la console. Lorsque le temps plein (10 secondes) s’est écoulé, il affiche « Terminé ».
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :