C# Window forms, inviare dati tra le varie form con .NET 10

Articolo che illustra una tecnica per passare dati da una form ad altre form.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

In questo articolo vedremo come in un progetto di tipo Windows forms, con il linguaggio di programmazione C# e l’ultima versione del Framework .NET, che è la 10, come trasferire i dati da una form ad altre.
In particolare vedremo come dalla form1, possiamo passare alcuni  valori alle Form2 e Form3.
Questa tecnica può capitare quando si devono gestire dati tra le varie maschere, senza dover eseguire operazioni sul database o nel caso che sono valori di calcolo o di riferimento (come l’id per una richiesta di select su un database).


Creazione del progetto


Si crea un nuovo progetto di tipo Windows Forms, in particolare selezionando come progetto quello denominato “App Windows Forms”, impostando il nome del progetto e selezionando l’ultima versione del Framework, nel momento in cui è pubblicato l’articolo la versione è la 10.
Una volta creato il progetto, non resta che aggiungere due nuove form, in modo da passare i dati.
Facciamo click con il tasto destro sul nome del progetto nella finestra “Esplora soluzioni”,  nel menu che viene visualizzato, selezioniamo la voce “Aggiungi” e nel sotto menu facciamo click sulla voce “Form (Windows Forms)”, nella finestra che viene aperta conferiamo con il pulsante “Aggiungi” il nome della form proposto (“form2”). Ripetiamo la stessa procedura per aggiungere un’altra form, questa volta il nome sarà tipo “form3”.
Aggiungiamo per ogni form aggiunta un controllo di tipo “Label”, in questo controllo sarà visualizzato il valore che passeremo.
Aggiungiamo in una form principale, che di norma viene dichiarata con il nome “Form1”, con la quale viene eseguita all’avvio dell’applicativo, un controllo di tipo “Button”, con il quale passeremo i valori alle due form aggiunte in precedenza.
Il pulsante avrà la proprietà “Text” impostata con il valore “Invia”, e la proprietà “Name”, con il valore “BtnInvia”. 
Aggiungiamo un controllo textbox, con il quale scriviamo il testo che dovrà essere inviato alle altre form, la proprietà “Name” di questo controllo sarà “TxtTesto”.

Stesura del codice


Terminata la creazione del progetto, non resta che scrivere il codice per gestire il passaggio dei valori tra una form e l’altra.
Passiamo in visualizzazione codice, e sotto alla dichiarazione di classe della form, aggiungiamo un evento personalizzato, con il quale passeremo i valori alle varie form.
Di seguito si riporta la dichiarazione dell’evento OnDatiInviare, che riguarda la possibilità di inviare i dati alle altre form.

C#
public partial class Form1 : Form
{
   public event Action<string> OnDatiInviare;

Passiamo in visualizzazione grafica e facciamo doppio click sul controllo del pulsante, in modo da passare in visualizzazione codice dell’evento click del pulsante.

In questo evento, tramite il metodo “Invoke” dell’evento creato “OnDatiInviare”, verrà rilevato il valore della proprietà “Text” della casella di testo, per passarlo alle altre form.

Di seguiti si riporta il frammento di codice delle suddette operazioni.

C#
private void BtnInvia_Click(object sender, EventArgs e)
{
   OnDatiInviare?.Invoke(TxtTesto.Text);
}

Terminata questa operazione, nelle altre form dobbiamo aggiungere il riferimento all’evento appena creato in form1, in modo che ogni volta che viene eseguito le form ricevono il valore.
Nelle due form, dobbiamo creare un metodo pubblico “Collega”, che riceve come parametro la form1, in modo che possiamo aggiungerlo ad un gestore di evento

Di seguito si riporta il frammento di codice delle suddette operazioni, da fare nelle due form..

C#
//Metodo che viene richiamato la prima volta per definire il gestore di evento
public void Collega(Form1 form1)  
{
   form1.OnDatiInviare += Form1_OnDatiInviare;
}
//Gestore di evento che riceve i dati dalla form1
private void Form1_OnDatiInviare(string dati)
{
   label1.Text = dati;
}

Quando si fa click su +=, l’editor di Visual Studio 2026 (o precedenti) suggerisce la creazione del gestore di evento, il tutto come mostrato in figura 1.

Figura 1 – Ci suggerisce il nome del gestore di evento.

Figura 1 – Ci suggerisce il nome del gestore di evento.

Una volta visualizzato il nome del possibile gestore dell’evento, se il suggerimento riteniamo valido, confermiamo con il pulsante “Invio” della tastiera, il tutto come mostrato in figura 2.

Figura 2 – La conferma per il gestore dell’evento

Figura 2 – La conferma per il gestore dell’evento

Di seguito si riporta il codice per la form3.

C#
public void Collega(Form1 form1)
{
    form1.OnDatiInviare += Form1_OnDatiInviare;
}
private void Form1_OnDatiInviare(string dati)
{
   label1.Text = dati;
}

Ritorniamo alla form1, e nell’evento load scriviamo il codice per avviare le due form, ma soprattutto passare al metodo pubblico “Collega” la form1.
Di seguito si riporta il frammento di codice dell’evento load della form1.

C#
private void Form1_Load(object sender, EventArgs e)
{
    Form2 form2 = new();
    form2.Collega(this);
    form2.Show();
    Form3 form3 = new();
    form3.Collega(this);
    form3.Show();
}

Dopo aver apportate queste modifiche, non resta che eseguire il codice, inserire del testo nella casella di testo, e dopo aver fatto click sul pulsante vedremo visualizzato il testo nelle due form.

Conclusioni


L’articolo ha voluto fornire al lettore una tecnica per passare dei valori tra form. Quando si sviluppano applicazioni eseguibili, può tornare utile passare valori tra le varie form, in quei contesti in cui si riporta form secondarie di dettaglio, per fornire ulteriori informazioni o gestire dati, da form secondari. Lo sviluppo di applicazioni Windows Forms, è completamente diverso da quello del web, ma con un giusto approccio può risultare molto semplice.