Here is a simple method to allow you to start an app with one form and then close that form and open another without exiting the app. I have implemented it with two forms here but you could have as many as you like. This is what would have been termed a dialogue-based application in times gone by I think. You would make the module the startup object for the project:
VB Code:
  1. Module Module1
  2.  
  3.     Public mainForm As Form 'The current primary form.
  4.  
  5.     Sub Main()
  6.         'Start the app with a new instance of Form1
  7.         mainForm = New Form1
  8.  
  9.         'Keep showing the current main form until there isn't one.
  10.         Do
  11.             Application.Run(mainForm)
  12.         Loop While Not mainForm Is Nothing
  13.     End Sub
  14.  
  15. End Module
  16.  
  17. Public Class Form1
  18.  
  19.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  20.         'Open a new main form and close this one.
  21.         mainForm = New Form2
  22.         Me.Close()
  23.     End Sub
  24.  
  25.     Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
  26.         If mainForm Is Me Then
  27.             'This is the main form so let the app exit.
  28.             mainForm = Nothing
  29.         End If
  30.     End Sub
  31.  
  32. End Class
  33.  
  34. Public Class Form2
  35.  
  36.     Private Sub Form2_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
  37.         If mainForm Is Me Then
  38.             'This is the main form so let the app exit.
  39.             mainForm = Nothing
  40.         End If
  41.     End Sub
  42.  
  43. End Class
Note that you cannot use this method to switch the main form to one that is already open because the call to Application.Run will try to display it. This will cause an exception to be thrown if the form is already displayed.