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
risposta
public MyClass()
{
InitializeComponent();
textBox1.LostFocus += new EventHandler(testBox1_LostFocus);
}
void testBox1_LostFocus(object sender, EventArgs e)
{
// do stuff
}
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.
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
}
Devi essere più specifico. – tster
Penso che voglia solo sapere come aggiungere gestori di eventi e generare eventi in C#, e sa già come farlo in VB. –
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