Hola fap1603.
Puedes conseguir lo que pretendes de varias formas, si bien yo aquí te muestro una de mi gusto.
Se trata de utilizar funciones de vb que nos permiten almacenar , borrar y recuperar 'propiedades' en el registro de windows (poco nos importará en que sección o clave...)
Estas funciones son
SaveSetting ,
GetSetting y
DeleteSettingCada vez que muestres un formulario de estos que quieres que sea visible en el caso que dices, síguelo de una llamada a SaveSetting:
.
.
.
Dim frm1 As Form1
Set frm1 = Form1
frm1.Show
SaveSetting App.ExeName, frm1.Name, "Cargado", "Sí"
.
.
.
En el evento Unload del formulario añade:
Private Sub Form_Unload(Cancel as integer)
DeleteSetting App.ExeName, Me.Name
End Sub
En el procediento que se inicie la aplicación (Sub Main o evento Load del formulario principal) recupera los formularios que estaban visibles.
Supongamos que los formularios de tu proyecto son 5 y se llaman FormN, donde N es el número de formulario. El código podría ser algo así:
Private Sub Main()
Dim i1 as Integer , s1 as String, frm1 as Form
For i1 = 1 to 5
s1 = "Form" & i1
If "Sí" = GetSetting(App.ExeName, s1, "Cargado", "No") Then
Select Case i1
Case 1
Set frm1 = new Form1
case 2
Set frm1 = new Form2
case 3
Set frm1 = new Form3
case 4
Set frm1 = new Form4
case 5
Set frm1 = new Form5
End Select
frm1.Show
End If
Next i1
Set frm1 = Nothing
End Sub
Si cuentas con una utilidad para desinstalar tu aplicación, o cuando te interese borrar estas propiedades, utiliza:
DeleteSetting App.ExeName
Espero que con estos ejemplos explicara la idea lo suficientemente bien... es posible que en el código haya cometido algún fallo (está escrito al vuelo), pero la idea sería esa.
Suerte.