Prima di tutto, avvolgi il tuo codice di aggiornamento in un metodo a sé stante e chiamalo dal tuo metodo di gestione dell'evento click, in questo modo:
private void btnRefresh_Click(object sender, EventArgs e)
{
this.RefreshData();
}
public void RefreshData()
{
GVThesis.DataSource = thesisRepository.GetThesis();
GVThesis.Refresh();
}
Quindi, supponendo che tu stia istanziando e avviando il nuovo form (Form2) dal tuo Form1, vai semplicemente nel codice di Form2 e crea te stesso un nuovo sovraccarico del costruttore che accetterà un riferimento a Form1 e lo memorizzerà in una variabile privata, in questo modo :
public partial class Form2 : Form
{
private Form1 frm1;
public Form2()
{
InitializeComponent();
}
public Form2(Form1 otherForm)
{
InitializeComponent();
this.frm1 = otherForm;
}
}
Quindi puoi chiamare "refresh" da qualsiasi punto in Form2 in questo modo:
this.frm1.RefreshData();
MODIFICA:
Ho creato un piccolo esempio, non riesco a caricarlo qui... ma ecco uno screenshot sia del programma stesso in VS, sia uno screenshot del risultato dell'esecuzione e dell'esecuzione della funzione ...speriamo che ti aiuti.
Il programma (ingrandisci la vista se sembra troppo piccola)
Il risultato: