Originariamente inviato da alka
Immagino che il Form interessato sia un "figlio" (non nel senso MDI del termine) del Form principale, cioè la responsabilità di aprire quel form ricade sul Form principale. Confermi?
In tal caso, aggiungi un campo alla tua classe che rappresenta il form principale che appartenga allo stesso tipo del form secondario; esemplificando, qualcosa come
codice:
Public Class MyMainForm
Private ChildForm As MyChildForm
End Class
In questo modo, hai a disposizione una variabile utilizzabile da tutti i metodi (procedure/funzioni di una classe) per immagazzinare al suo interno il riferimento al Form secondario.
Quando devi creare il form, scriverai un codice simile al seguente:
codice:
If ChildForm Is Nothing Then
ChildForm = New MyChildForm()
End If
ChildForm.Show()
In sostanza, se
ChildForm è la variabile che contiene il riferimento al form secondario che hai creato, e che dovrà essere impostato a
Nothing quando quel form viene distrutto - anche se mi pare di capire che esso dovrà essere presente in memoria per tutta la durata dell'applicazione - è sufficiente controllarne, appunto, l'equivalenza con
Nothing per determinare se è necessario o meno creare il form secondario; in seguito, il form viene visualizzato con il metodo
Show.
Inserendo questo codice in una procedura del form principale, basta invocarlo ogni volta che serve rendere visibile il form.
Va detto poi che se devi compiere inizializzazioni sul form stesso, puoi sempre introdurre un metodo all'interno della classe del Form secondario, qualcosa di simile a
codice:
Public Class MyChildForm
Public Sub InitializeMe()
' Qui le tue inizializzazioni...
End Sub
End Class
da richiamare prima di visualizzare il form
codice:
If ChildForm Is Nothing Then
ChildForm = New MyChildForm()
End If
ChildForm.InitializeMe()
ChildForm.Show()
Ci sono tante alternative a questo approccio, è solo un esempio dimostrativo.
Non ho verificato sintatticamente il codice, poiché lo scritto direttamente qui, quindi va senz'altro adattato e forse corretto un minimo; io preferisco sempre spostare l'attenzione verso il significato del codice, quando si tratta di spiegare qualcosa, piuttosto che dall'uso derivante dal semplice "copia e incolla".
Insomma, concentrati sull'aspetto concettuale della soluzione proposta piuttosto che sui meri stralci di codice che hanno la semplice funzione di decorare la spiegazione teorica.
Ciao!