Lire en anglais

Partager via


RaiseEvent, instruction

Déclenche un événement déclaré au niveau du module au sein d’une classe, d’un formulaire ou d’un document.

Syntaxe

RaiseEvent eventname[( argumentlist )]  

Pièces

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.

Remarques

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.

Exemple 1

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

Exemple 2

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é ».

Voir aussi