2009-11-21 4 views
2

J'ai besoin de définir des événements sur une bibliothèque de classes et les attraper dans un formulaire.Comment déclarer des événements sur une bibliothèque de classes (DLL) et les attraper sur un formulaire?

Par exemple, je cours un sous dans le DLL file, et j'ai besoin de "recevoir" l'événement que le sous-classe de la classe est en cours d'exécution.

Le fichier DLL est créé par moi dans Visual Basic, mais comment puis-je déclencher des événements pour qu'il soit attrapé dans le formulaire?

Veuillez fournir un exemple.

+0

Quel type de bibliothèque de classes? Géré ou non? Celui que vous avez créé? Le sub soulève un événement et vous devez l'attraper? Veuillez fournir plus d'informations. – Wilhelm

+0

La DLL est creted par moi en vb, mais je ne sais pas comment soulever des événements sur elle pour être attrapés dans le formulaire. –

+0

Vous gérez des événements, vous ne les attrapez pas :) – leppie

Répondre

6

code dans la dll

Public Event MySpecialEvent() 

Private Sub Test 
    RaiseEvent MySpecialEvent 
End Sub 

code sous la forme

Private _MyDll as MyDLL 

Public Sub Main 
    _MyDLL = New MyDLL 
    AddHandler _MyDLL.MySpecialEvent, AddressOf MySpecialEventHandler 
End Sub 

Private Sub MySpecialEventHandler 
    'Put your code here to act upon the handled event 
End Sub 

Vous aurez également besoin de supprimer le gestionnaire d'événements à un moment donné dans la vie de la forme avec

RemoveHandler _MyDLL.MySpecialEvent, AddressOf MySpecialEventHandler 
+0

Merci beaucoup Walter! –

+0

Vous pouvez également inclure un paramètre dans l'événement si vous devez transmettre des données au code d'écoute Evénement public MySpecialEvent (S as String) – Walter

0

Lorsque vous parlez d'une DLL non gérée «native», il n'existe pas de moyen direct d'y parvenir. Vous devez déclarer une signature de méthode qui doit être utilisée pour cet événement. Ensuite, vous devez fournir un moyen de placer un pointeur sur une méthode correspondant à cette signature dans la DLL (fournir une méthode de rappel). À partir de la DLL, vous pouvez ensuite appeler cette méthode si nécessaire (au lieu de déclencher l'événement).

Questions connexes