2009-09-28 11 views
6

Sono a mio agio con gli eventi e gli handler Vb.Net. Qualcuno può aiutarmi con come creare i gestori di eventi in C# e generare eventi.Come aumentare l'evento utilizzando addHandler

+0

Devi essere più specifico. – tster

+2

Penso che voglia solo sapere come aggiungere gestori di eventi e generare eventi in C#, e sa già come farlo in VB. –

+0

Mitesh, ho modificato parecchio la tua domanda. Stavo solo cercando di migliorare l'inglese. Se ho frainteso quello che stavi chiedendo, mi dispiace, ti preghiamo di cambiarlo di nuovo. – MarkJ

risposta

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

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

In C# 2 e fino aggiunti i gestori di eventi come questo:

yourObject.Event += someMethodGroup; 

Qualora la firma del someMethodGroup corrisponda alla firma del delegato di yourObject.Event.

In C# 1 è necessario creare esplicitamente un gestore di eventi come questo:

yourObject.Event += new EventHandler(someMethodGroup); 

e ora le firme del gruppo metodo, eventi, e EventHandler devono corrispondere.

10

Gli sviluppatori che conoscono solo C#, o solo VB.Net, potrebbero non sapere che questa è una delle maggiori differenze tra VB.NET e C#.

I'll shamelesssly copy questa bella spiegazione degli eventi VB: VB utilizza una sintassi dichiarativa per allegare eventi. La clausola Handles viene visualizzata nel codice che gestirà l'evento. Se appropriato, più metodi possono gestire lo stesso evento e più eventi possono essere gestiti con lo stesso metodo. L'uso della clausola Handles si basa sul modificatore WithEvents che appare sulla dichiarazione della variabile sottostante come un pulsante. È inoltre possibile associare i gestori di proprietà utilizzando la parola chiave AddHandler e rimuoverli con RemoveHandler. Per esempio

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 

In C# non è possibile utilizzare la sintassi dichiarativa. Si usa + = che è sovraccarico per agire come AddBandler VB.Net. Ecco un esempio rubato spudoratamente da tster's answer:

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

void testBox1_Leave(object sender, EventArgs e) 
{ 
    //Do Stuff 
} 
Problemi correlati