Per semplificare le cose, e provare questa cosa delle form, ho creato un piccolo progetto.
namespace testForm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Form2 nuovaForm = new Form2();
private void button1_Click(object sender, EventArgs e)
{
nuovaForm.Show();
}
private void button2_Click(object sender, EventArgs e)
{
nuovaForm.Activate();
}
}
}
Allora c'è una form1 con 2 button
Il button1 apre una nuova form, il button2 attiva la nuova form portandola quindi in primo piano, qualora fosse finita dietro alla form1.
In questo modo funziona, la nuova form viene portata in primo piano, la posso trascinare dove voglio, e farla riapparire qualora fosse finita dietro alla form1
Il problema con questo codice è che non posso chiudere e riaprire la nuova form, se la chiudo quando clicco sul button1 per aprirla nuovamente mi viene generato l'errore sull'istruzione
nuovaForm.Show();
Eccezzione non gestita
System.ObjectDisposedException: 'Impossibile accedere a un oggetto eliminato.
Il problema credo di aver capito che prima di aprire la nuova form, la devo nuovamente instanziare con l'istruzione
Form2 nuovaForm = new Form2();
Però mettendo questa istruzione dentro all'evento click dei button mi smette di funzionare l'istruzione per far riapparire la form in primo piano
All'interno dell'evento click button2, ho provato a mettere:
nuovaForm.Activate();
nuovaForm.TopMost = true;
nuovaForm.BringToFront = true;
Nessuna di queste istruzioni funzionano se instanzio la nuova form all'interno dell'evento click
Riassumendo se l'istrzuzione per isntanziare la nuova form
Form2 nuovaForm = new Form2() la tengo fuori dall'evento click, mi si genera l'errore di cui sopra, se la metto dentro all'evento click mi smettono di funzionare tutte le istruzioni per portare in primo piano la nuova form.