2009-08-25 4 views
1

Je suis donc un développeur Visual Basic 6 qui passe à CLR et qui a besoin d'une réponse à une vraie question newb.Comment ça s'appelle? Je veux traiter les "événements" qu'une DLL CLR produit

Dans Visual Basic 6, si vous aviez un contrôle ActiveX, vous pouvez faire référence à ce contrôle et une déclaration disant essentiellement:

WithEvents public YourControl (accent sur le mot-clé "WithEvents")

Qu'est-ce que En effet, dans Visual Basic, vous disposez d'un ensemble de fonctions de gestionnaire d'événements pour ce contrôle. Vous pouvez simplement les choisir dans une liste déroulante et un gestionnaire vide sera généré.

Je cherche l'équivalent de celui de VS2008 (Winform). Comment accéder à cette fonctionnalité dans l'IDE de Visual Studio 2008? J'ai le projet DLL CLR référencé dans mon projet Winform. J'ai juste besoin de savoir comment accéder aux fonctions/classes de cette DLL CLR.

Merci!

+0

Voulez-vous dire "C#" au lieu de "CLR"? – David

Répondre

0

En cas de classe diffuseur:

public event EventHandler MyEvent; 

void OnMyEvent() 
{ 
    if (MyEvent != null) 
     MyEvent(this, EventArgs.Empty); 
} 

En classe d'événement recepteur:

obj.MyEvent += new EventHandler(obj_MyEvent); 

void obj_MyEvent(object sender, EventArgs e) 
{ 
    // Do something as a result of the event here 
} 

Syntaxe est en C#, VB.NET est similaire

+0

Bien que la syntaxe de la déclaration d'événement et de l'invocation soit similaire, l'ajout d'un délégué ne l'est pas. –

+0

AddHandler ... AddressOf ... ressemble à moi, juste plus verbeux. Bien qu'il ait demandé "CLR"; peut-être que cela signifie ldftn ... instance callvirt void BroadcasterClass :: add_MyEvent (classe System.EventHandler)? ;) – rpetrich

1

La réponse dépendra de la langue que vous J'utilise.

Si vous utilisez Visual Basic .NET

La syntaxe est en fait la même chose. Dans tous les langages .NET, les événements sont simplement delegates, qui sont essentiellement des pointeurs de fonction pouvant pointer vers zéro ou plusieurs fonctions de signatures identiques.

Le mot-clé WithEvents n'est pas absolument nécessaire pour gérer les événements en VB.NET, mais il fournit au développeur la possibilité d'utiliser des gestionnaires d'événements héritage de style VB (ce qui est de savoir comment le concepteur il le fait, comme bien). Il peut être fait comme vous êtes familier avec, comme ce

Private WithEvents YourControl as Control 

Private Sub ClickFunction(ByVal sender as Object, ByVal e as EventArgs) Handles YourControl.Click 
    'do things 
End Sub 

Pour gérer un événement sur un objet sans le mot-clé WithEvents, utilisez AddHandler

AddHandler YourControl.Click, AddressOf ClickFunction 

Private Sub ClickFunction(ByVal sender as Object, ByVal e as EventArgs) 
    'do things 
End Sub 

Si vous êtes intéressés à consulter le événements dans la liste déroulante en haut de l'éditeur, tout ce dont vous avez besoin est la variable à déclarer avec le mot-clé WithEvents. Il suffit de localiser la variable qui vous intéresse dans le menu sur la gauche, puis les événements devraient apparaître dans le menu sur la droite.

Si vous utilisez C# .NET

Il n'y a aucune fonctionnalité comme celui-ci en C#. Tous les gestionnaires d'événements doivent être joints explicitement, comme ceci

private Control YourControl; 

private void ClickFunction(Object sender, EventArgs e) 
{ 
    // do stuff 
} 

// to attach, this goes somewhere in code 

//... 
YourControl.Click += ClickFunction; 
//... 
Questions connexes