Come inviare gli stessi dati a 2 ListBox in 2 form diversi in C#

Come inviare gli stessi dati a 2 ListBox in 2 form diversi in C#

Come inviare gli stessi dati a 2 ListBox in 2 form diversi in C#: Condividere gli stessi elementi in 2 controlli diversi su 2 form diversi.

Durante lo sviluppo di un software ci si può trovare davanti a diverse sfide, alcune più semplici altre più complicate, e non c’è sempre un solo modo per risolverle.

Quella che vedremo un questo tutorial riguarda la condivisione di dati tra 2 controlli presenti su 2 form diversi.

Come tante altre situazioni i modi per ottenere lo stesso risultato sono diversi, si potrebbe ad esempio ricorrere a delle variabili che vanno ad immagazzinare i dati per poi riproporli nel 2 form, oppure come vedremo in questo tutorial, inviare direttamente i dati da un controllo all’altro.

Come inviare gli stessi dati a 2 ListBox in 2 form diversi in C#

In questo tutorial andremo ad analizzare due situazioni diverse, la prima applicabile quando i dati da inviare sono preimpostati, e quindi è possibile caricarli in anticipo.

La seconda invece invierà i dati presenti in una ListBox potenzialmente modificata dall’utente ad una seconda ListBox.

CASO 1 – DATI PRECARICATI SU PIÙ CONTROLLI

Considerando che dovremo inviare i dati su diversi form, andiamo a creare un nuovo elemento di tipo Classe, chiamiamo il file ad esempio classe1.cs (consiglio sempre di usare nomi specifici, quindi evitare questo tipo di nomi in un progetto reale).

using System.Windows.Forms;
public static void PopolaListBox(ListBox ListboxDestinazione)
        {
            ListboxDestinazione.Items.Add("1");
            ListboxDestinazione.Items.Add("2");
            ListboxDestinazione.Items.Add("3");
            ListboxDestinazione.Items.Add("4");
            ListboxDestinazione.Items.Add("5");
        }

Aggiungiamo lo using System.Windows.Forms per poter inserire il controllo Listbox come input, altrimenti dovremmo scrivere System.Windows.Forms.Listbox

Utilizziamo il nome dell’Input all’interno della funzione, che sarà quindi utilizzabile per qualsiasi controllo di tipo Listbox all’interno del progetto.

A questo punto, per richiamarla ci basterà scrivere:

Class1.PopolaListBox(listBox1);

Dove Class1 è il nome della classe, PopolaListBox è il nome della funzione e listbox1 è il nome del controllo ListBox al quale vogliamo inviare i dati.

Questo metodo ovviamente funziona solo con dati preimpostati, ma andiamo a vedere come invece inviare dati da una ListBox modificata ad una ListBox presente su un altro Form.

CASO 2 – INVIARE DATI DA UNA LISTBOX AD UN’ALTRA

Form2 CaricaForm2 = new Form2();
            for (int a = 0; a <= listBox1.Items.Count - 1; a++)
            {
                CaricaForm2.listBox1.Items.Add(listBox1.Items[a]);
            }
            CaricaForm2.Show();

Questo codice lo andremo ad inserire nell’evento associato al Button che carica il Form2.

I passaggi sono 3:

  • Creazione di una nuova istanza del Form2
  • Lettura dei dati presenti nella ListBox del Form1 e invio alla ListBox del Form2
  • Apertura del Form2

Prima di procedere è fondamentale apportare una modifica alle Proprietà della ListBox del Form2.

Dovremo modificare la proprietà Modifiers da Private a Public.

Questo permetterà al Form1 di accedere alla ListBox del Form2 (che altrimenti non sarebbe accessibile) e quindi di apportare modifiche.

Con il ciclo For andiamo a scorrere tutti gli elementi presenti nella ListBox del Form1 e li andiamo ad aggiungere nella ListBox del Form2.