The best way to do this is with the Singleton pattern. A Singleton is, by definition, a type of which there can only ever be a single instance. Creating a Singleton class in VB is quite easy:
VB Code:
  1. Public Class SingletonForm
  2.  
  3.     ''' <summary>
  4.     ''' The one and only instance of the SingletonForm class.
  5.     ''' </summary>
  6.     Private Shared _instance As SingletonForm
  7.  
  8.     ''' <summary>
  9.     ''' Gets the one and only instance of the SingletonForm class.
  10.     ''' </summary>
  11.     ''' <value>
  12.     ''' A SingletonForm object that represents the only instance of the class.
  13.     ''' </value>
  14.     Public Shared ReadOnly Property Instance() As SingletonForm
  15.         Get
  16.             If _instance Is Nothing OrElse _instance.IsDisposed Then
  17.                 'Either and instance has never been created or the previous instance was disposed.
  18.                 _instance = New SingletonForm
  19.             End If
  20.  
  21.             Return _instance
  22.         End Get
  23.     End Property
  24.  
  25.     ''' <summary>
  26.     ''' Initialises a new instance of the SingletonForm class.
  27.     ''' </summary>
  28.     ''' <remarks>
  29.     ''' The only constructor is declared private so it cannot be invoked from outside the class.
  30.     ''' </remarks>
  31.     Private Sub New()
  32.         ' This call is required by the Windows Form Designer.
  33.         InitializeComponent()
  34.  
  35.         ' Add any initialization after the InitializeComponent() call.
  36.     End Sub
  37.  
  38. End Class
Now you always access the one an only instance of the SingletonForm class via the Instance property. That property is Shared so it is called on the class itself. That means that where normally you would do this:
VB Code:
  1. Dim nf As New NormalForm
  2.  
  3. nf.Show()
you now do this:
VB Code:
  1. SingletonForm.Instance.Show()