You must be calling Show on the same instance as you previously called Close on. If you call Show on a form and then call Close, that form is disposed. You can still access it to get data from it but you cannot display it again. If you want to display a form of that type to the user again then you must create a new instance.
I'm not a big fan of default instances in general but this is one case where using them might help. If you never intend more than one instance of a type of form to be displayed at a time then you can use the default instance and that will automatically manage creation for you. Instead of doing this:
vb.net Code:
Dim f1 As New Form1
f1.Show()
you can do this:
That will display the default instance. The system will automatically handle creating a new instance if there isn't one already or the one that exists has been disposed.