ANALOGIE E DIFFERENZE DEGLI EVENTI IN C# E VB.NET

Come già è stato detto nei precedenti articoli, i due linguaggi di programmazione da noi esaminati, cioè C# e VB.NET sono linguaggi di programmazione ad oggetti. Ma cosa significa esattamente? Possiamo definire un evento come il verificarsi di una condizione, che potrebbe essere la digitazione di una casella di testo o anche la digitazione di una casella di testo. Il verificarsi di questa condizione genera un evento, ad esempio se si clicca il tasto del mouse si genera l’evento “click”. Ad ogni evento può essere associata un’azione che viene eseguita da una routine quando la condizione è verificata. Possiamo perciò dire banalmente che ogni evento “attiva” una parte del codice.

In Visual Studio ogni controllo inserito nel form ha associato un gran numero di eventi che il programmatore può gestire. In VB.NET la procedura che gestisce l’evento è una sub routine caratterizzata da una clausola, cioè “Handles”. Essa è fondamentale perché associa la sub routine all’evento. Per capire meglio vediamo un esempio di gestore degli eventi in VB.NET:

Private Sub Button1_Click(sender AS Object, e As EventArgs) Handles Button1.Click
     Me.RichTextBox1.Text = "Esempio di gestione di un evento"
End Sub

Prima di tutto bisogna capire che cosa fa questa procedura: quando si preme sul bottone “Button1”, nella casella di testo comparirà la scritta ‘Esempio di gestione di un evento’. Perciò il nome della sub routine è “Button1_Click”, ma esso non è molto importante, infatti, come abbiamo detto, l’importante è il nome della clausola “Button1.Click”.Se modificassi il nome non avrei problemi, ma se modificassi la clausola la procedura non sarebbe eseguita quando la condizione click viene soddisfatta.

In C# più o meno succede la stessa cosa, con l’unica differenza che nella sintassi della procedura che gestisce l’evento non è presente la clausola. Essa infatti si trova in un file inizialmente a noi nascosto. Tale file è chiamato “Designer”. Questa grande differenza tra i due linguaggi, cioè la gestione degli eventi implicitamente o esplicitamente è dovuta a motivi storici, cioè alla provenienza e agli “antenati” dei due linguaggi. Il file Designer in C# contiene la definizione auto-generata di tutti gli oggetti presenti nel form e serve a definire i controlli automaticamente. Vediamo ora un esempio di procedura in C# uguale a quello visto in VB.NET:

private void button1_Click(object sender, EventArgs e)
{
    this.richTextBox1.Text = "Esempio di gestione di un evento";
}

In realtà va detto che anche nel linguaggi VB.NET esiste il file Designer, ma in questo caso non contiene la definizione degli eventi. In entrambi i linguaggi inoltre è possibile rimuovere la clausola esplicita o implicita e inserirla nel codice, perciò possiamo dire semplicemente che VB.NET ci dà qualcosa in più.

Infine vediamo come unire due eventi diversi in un unico gestore. Consideriamo il caso molto semplice in cui il nostro form è formato da due bottoni e da una casella di testo. Alla pressione di uno dei due bottoni comparirà una diversa scritta nella casella. Per riunire i due eventi perciò il gestore dovrà avere due clausole. Nel caso di VB.NET si avrà “... Handles Button1.Click, Button2.Click“. Quindi le due clausole sono divisa da una virgola. Per definire quale dei due controlli ha eseguito l’evento, viene utilizzato il primo argomento della procedura, cioè sender (mandatario) e una funzione if

Private Sub Button1_Click(sender As System, e As EventArgs) Handles Button1.Click, Button2.Click
     If sender Is Button1 Then
        Me.Label1.Text = "bottone1"
     ElseIf sender Is Button2 Then
        Me.Label1.Text = "bottone2"
     End If
Ens Sub

La stessa cosa può essere fatta in C#, ma questa volta si dovrà andare a modificare il codice presente nel file Designer e andando sempre ad utilizzare una istruzione If.

Lascia un commento

Progetta un sito come questo con WordPress.com
Comincia ora