Quando crei un'istanza del Form, ne memorizzi un riferimento all'interno della variabile; tale variabile ti potrà servire per agire su un oggetto modificando le proprietà e chiamandone i metodi.
Nel tuo caso, dopo aver creato la Form2, devi passare a quell'istanza il riferimento alla Form1 che è sua chiamante, memorizzandolo in un campo della classe Form2.
Dal codice che implementa Form2 potrai utilizzare questo riferimento per manipolarne i campi.
Per esemplificare, questo è il codice del primo form (Form1).
codice:
public partial class Form1 : Form
{
private void callForm2Button_Click(object sender, EventArgs e)
{
// Creo un'istanza di Form2
Form2 frm = new Form2();
// Assegno al campo il riferimento all'istanza corrente di Form1
frm.form1Reference = this;
// Visualizzo l'istanza di Form2
frm.ShowDialog();
}
}
Questo è il codice ipotetico per il secondo Form (Form2):
codice:
public partial class Form2 : Form
{
public Form1 form1Reference;
private void changeForm1_Click(object sender, EventArgs e)
{
// Modifico la casella di testo sull'istanza di Form1
form1Reference.demoTextBox.Text = "Test";
}
}
In sostanza, il Form1 contiene un pulsante che crea un'istanza di Form2 passando un riferimento a se stessa affinchè essa possa utilizzare tale riferimento per richiamarne metodi e modificarne proprietà; il metodo ShowModal visualizza il form.
Nel codice di Form2, è presente la dichiarazione del campo che conterrà il riferimento all'istanza di Form1 chiamante (che provvede poi ad assegnarne il valore a se stessa); nel codice che risponde al clic sul pulsante, viene infatti utilizzato tale riferimento per modificare il contenuto della casella di testo dimostrativa sulla form chiamante Form1.
Per poter accedere ad un controllo presente su un altro form, è necessario ricordarsi di attribuire a quest'ultimo un adeguata visibilità (Public) intervenendo sulla proprietà Modifiers.
Cerca di interpretare il significato delle porzioni significative di codice.
Ciao!