In a nutshell:
If you have designed a form, it's not directly usable. Yoe see, in .NET
everything is an object, and that applies for forms, too. Before you can use
any object (that is, as long they are not value types like Integer, String,
DateTime, etc.) you have to instance it, thereby calling its constructor
with *new*.
So lets say you designed a form named frmTest. Before instancing it you have
to define an object varibale, like this:
Dim instanceOfFrmTest as frmTest.
This variable is just a placeholder for a future reference to the actual
form data. It's not instanced yet. To actually instance it, you code:
instaceOfFrmTest = New frmTest.
From now on you can use the form as often as you want to.
You show it modally with:
instaceOfFrmTest.ShowDialog()
Modal means, that you give the whole program control to the form. The
program logic sort of stops at the ShowDialog, and waits till the form
closes - for example due to some user interaction. Once the forms hides,
closes or disposes itself, the program continues at that position.
If you want to run both instances of the forms simultaneously (one instance
is already running, that would be the main form the program started with),
you call it with
instanceOfFrmTest.Show()
In that case, you don't give away program control at the time exclusively to
the form.
By the way: To shorten things up, you can do the defining and instacing of
an object in one line:
Dim instaceOfFrmTest as New frmTest.
But for every object you use, you do that only once.
About the modifiers: If you define a variable in a procedure (a sub, a
property or a function), the variable is only valid in that procedure. It's
not valid outside. If you want its scope to be in the whole form class, you
define it right after the class definition.
However, I suggest you read about objects and form, provided by the VS-Help.
It'll let you develop programs quicker and more reliable, once you
understood the basic concepts behind it.
Hope this helps,
Klaus