2009-09-28 6 views
6

Je suis à l'aise avec les événements et gestionnaires Vb.Net. Quelqu'un peut-il m'aider à créer des gestionnaires d'événements dans C# et à déclencher des événements.Comment déclencher un événement en utilisant addHandler

+0

Vous devez être plus précis. – tster

+2

Je pense qu'il veut juste savoir comment ajouter des gestionnaires d'événements et élever des événements en C#, et il sait déjà comment le faire en VB. –

+0

Mitesh, j'ai beaucoup modifié votre question. J'essayais juste d'améliorer l'anglais. Si j'ai mal compris ce que vous demandiez, je suis désolé - s'il vous plaît, il suffit de le changer. – MarkJ

Répondre

3
public MyClass() 
    { 
     InitializeComponent(); 
     textBox1.LostFocus += new EventHandler(testBox1_LostFocus); 
    } 

    void testBox1_LostFocus(object sender, EventArgs e) 
    { 
     // do stuff 
    } 
4

En C# 2 et en vous ajoutez des gestionnaires d'événements comme celui-ci:

yourObject.Event += someMethodGroup; 

Lorsque la signature de someMethodGroup correspond à la signature de délégué de yourObject.Event.

En C# 1, vous devez créer explicitement un gestionnaire d'événements comme celui-ci:

yourObject.Event += new EventHandler(someMethodGroup); 

et maintenant les signatures du groupe de méthode, événement et EventHandler doit correspondre.

10

Les développeurs qui ne connaissent que C#, ou seulement VB.Net, peuvent ne pas savoir que c'est l'une des plus grandes différences entre VB.NET et C#.

Je vais shamelesssly copy cette belle explication des événements VB: VB utilise une syntaxe déclarative pour attacher des événements. La clause Handles apparaît sur le code qui gérera l'événement. Le cas échéant, plusieurs méthodes peuvent gérer le même événement et plusieurs événements peuvent être gérés par la même méthode. L'utilisation de la clause Handles repose sur le modificateur WithEvents apparaissant sur la déclaration de la variable sous-jacente telle qu'un bouton. Vous pouvez également attacher des gestionnaires de propriété en utilisant le mot clé AddHandler et les supprimer avec RemoveHandler. Par exemple

Friend WithEvents TextBox1 As System.Windows.Forms.TextBox 

Private Sub TextBox1_Leave(ByVal sender As System.Object, _ 
    ByVal e As System.EventArgs) Handles TextBox1.Leave 
    'Do Stuff ' 
End Sub 

En C#, vous ne pouvez pas utiliser la syntaxe déclarative. Vous utilisez + = qui est surchargé pour agir comme le VB.Net AddHandler. Voici un exemple sans vergogne volé tster's answer:

public MyClass() 
{ 
    InitializeComponent(); 
    textBox1.Leave += new EventHandler(testBox1_Leave); 
} 

void testBox1_Leave(object sender, EventArgs e) 
{ 
    //Do Stuff 
} 
Questions connexes