Ciao a tutti, sto cercando di creare una classe per gestire l'apertura e la chiusura delle varie maschere (form). L'obiettivo è quello di aprire i vari forms e se il form richiamato risulta aperto, portarlo in primo piano. Per fare questo ho iniziato con un approccio di questo genere:
codice:
Public Class clsForm
Private Shared WithEvents _f2 As Form2
Private Shared WithEvents _f3 As Form3
Public Enum eForm
eForm2
eForm3
End Enum
Public Sub ApriForm(ByVal tipo As eForm, ByVal frmCaller As Form)
Select Case tipo
Case eForm.eForm2
If _f2 Is Nothing Then
_f2 = New Form2(frmCaller)
_f2.Show()
Else
_f2.Select()
End If
Case eForm.eForm3
If _f3 Is Nothing Then
_f3 = New Form3(frmCaller)
_f3.Show()
Else
_f3.Select()
End If
End Select
End Sub
Public Function ChiudiForms() As Boolean
Dim retVal As Boolean = True
If Not _f2 Is Nothing Then
If MessageBox.Show(String.Format("Il form {0} è aperto." & Environment.NewLine & "Vuoi chiuderlo?", _f2.Name), "Chiusura applicazione", MessageBoxButtons.YesNo) = DialogResult.Yes Then
_f2.Dispose()
_f2 = Nothing
Else
_f2.Select()
retVal = False
End If
End If
If retVal Then
If Not _f3 Is Nothing Then
If MessageBox.Show(String.Format("Il form {0} è aperto." & Environment.NewLine & "Vuoi chiuderlo?", _f3.Name), "Chiusura applicazione", MessageBoxButtons.YesNo) = DialogResult.Yes Then
_f3.Dispose()
_f3 = Nothing
Else
_f3.Select()
retVal = False
End If
End If
End If
Return retVal
End Function
Private Shared Sub _f2_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles _f2.FormClosed
_f2.Dispose()
_f2 = Nothing
End Sub
Private Shared Sub _f3_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles _f3.FormClosed
_f3.Dispose()
_f3 = Nothing
End Sub
End Class
Anche se il tutto funziona bene, non sono sicuro sia la strada giusta...soprattutto per il fatto che devo dichiarare tante variabili quanti sono i forms.
Consigli/opinioni in merito?
Grazie