Effettivamente mi rendo conto solo ora che messo giù cosi non possa essere di immediata comprensione.
Nell'esempio di classe che ho postato, tralasciando i vari fronzoli, lo scenario del progetto di prova è un form principale (form1) e altri due form (form2 e form3).
Dal form1, tramite la classe richiamo, all'occorrenza, form2 e/o form3.
Per aprire il form viene chiamata la sub ApriForm passandogli l'enumerazione del form da aprire e il form chiamante.
Alla chiusura dell'applicazione (form1), viene chiamata la funzione ChiudiForms la quale controlla se ci sono form aperti ed eventualmente chiede se chiuderli e uscire dall'applicazione oppure no.

codice:
dim f as new clsForm
......
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
   'apre il form2     
   f.ApriForm(clsForm.eForm.eForm2, Me)
End Sub

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
   'prima di chiudere controlla che non ci siano form aperti..
   If Not f.ChiudiForms Then
      e.Cancel = True
   End If
End Sub
Il mio dubbio è in questo tipo di approccio.
La classe ha tanti oggetti form per quante sono le form nel progetto, pertanto ogni volta che aggiungo un form, mi devo ricordare di fare le opportune aggiunte alla classe.
Per questo motivo mi chiedevo, senza stare li a creare tante variabili quanti sono i form da richiamare, non c'è un metodo che mi permetta di risalire a tutti i form del progetto per aprirli, chiuderli e controllare il loro stato?
Grazie.