Déclenchant un événement dans les .net exemple
Je suis en train de créer un exemple de base de l'éducation d'un événement dans vb.net et j'espère que, en étudiant à fond je peux mettre à jour la façon dont mon système reçoit des données à partir du port série.
Droit maintenant, j'ai un système qui reçoit les données en provenance du port série via des chronomètres, le problème est qu'il y a certains événements dans un système que les conflits dans mon timer. De ce fait j'ai l'intention de changer la façon dont j'ai reçu les données à partir des ports série, au lieu de la minuterie que je veux utiliser vb.net raiseevent.
Malheureusement, je ne peux pas trouver un exemple simple sur la façon d'utiliser cet événement, par la recherche approfondie, j'ai vu le MSDN est post sur ce sujet et c'est ici. Alors, comment puis-je utiliser cet exemple? J'ai essayé de l'utiliser en dessous comme ça
Public Event TimeExpired(ByVal Status As String)
Public Sub RaiseTimeExpiredEvent()
RaiseEvent TimeExpired("Your time has run out")
MessageBox.Show(TimeExpired())
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
RaiseTimeExpiredEvent()
End Sub
Il ne fonctionne pas de travail, l'erreur est
Erreur de 1 'Événement Public TimeExpired(Statut String)' est un événement, et ne peut pas être appelée directement. L'utilisation d'un RaiseEvent' instruction pour déclencher un événement. C:\Users\Cary\Desktop\Projects\Testing\Testing\Testing\Form1.vb 5 25 Tests
À cause de cette erreur, j'ai essayé de faire comme ceci
Class Form1
Public Event TimeExpired(ByVal Status As String)
Public Sub RaiseTimeExpiredEvent()
RaiseEvent TimeExpired("Your time has run out")
MessageBox.Show(TimeExpired())
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
RaiseEvent TimeExpired()
End Sub
Fin De La Classe
Mais les états d'erreur
Erreur 2 Argument n'est pas spécifié pour le paramètre "Status" de 'Événement Public TimeExpired(Statut String)'. C:\Users\Cary\Desktop\Projects\Testing\Testing\Testing\Form1.vb 11 9 Test
Vous devez vous connecter pour publier un commentaire.
Êtes-vous à l'aide de Visual Studio ? Si oui, vous pouvez essayer d'afficher la Liste des Erreurs. Pour cela, cliquez sur Affichage, et la Liste d'Erreurs.
Pour gérer l'événement, vous pouvez ajouter ceci :
Voici le code complet :
Edit :
Si vous voulez déplacer la sensibilisation de l'événement dans un module, vous ne pouvez pas. Vous devez l'ajouter dans une classe. Voir ce lien.
Exemple de Class1 (vous devez le renommer...) :
Et pour l'utiliser, vous devez le déclarer WithEvents dans votre Form1 :
msgbox
avecconsole.writeline
On*
convention à tort. Des méthodes commeOnTimeExpired
devrait augmenter l'événement et non pas poignée l'événement. Le gestionnaire doit sans doute aussi êtrePrivate
et pasPublic
.OnTimeExpired
? En le rendantHandleTimeExpired
il deviendra valide?handles in modules must specify a 'withevents' variable
, j'ai essayé de le faire mais d'un autreerror
se produit. 🙁On*
méthodes sont généralementprotected
méthodes pour activer descendant de classes afin d'être en mesure de déclencher l'événement.