フォームの表示方法
フォーム表示方法は2種類あり、モーダル(他フォームが操作不能)かモードレス(他フォームも操作可能)での表示となります。
2つの違いを簡単に言えば、インスタンスの破棄の必要有無と、その後の処理がどうなるのかということです。
モーダル(他フォームが操作不能)
モーダルで表示する場合はShowDialogメソッドを使用します。
Form2 f = new Form2();
f.ShowDialog();
f.Dispose();
Dim f As New Form2() f.ShowDialog() f.Dispose()
この場合、ShowDialogメソッドが実行されるとForm2が表示されますが、その後の処理はForm2が閉じられた後に実行されます。また、インスタンスの破棄が必要ですので、ShowDialogメソッドの後にDisposeメソッドを呼び出します。
当然フォームはIDisposableを実装していますのでusingが使えます。この場合Disposeメソッドは呼び出し不要となります。
using (Form2 f = new Form2()) { f.ShowDialog(); }
Using f As New Form2() f.ShowDialog() End Using
モードレス(他フォームも操作可能)
モードレスで表示する場合はShowメソッドを使用します。
//C# Form2 f = new Form2(); f.Show();
Dim f As New Form2() f.Show()
モードレスの場合はForm2が開いてもForm1は操作可能ですし、Form1の処理も途中で止まることなく最後まで進みます。よって、インスタンスの破棄は不要となります。というか破棄してはいけません。
ShowメソッドもIDisposableを実装していますが、呼び出し元の処理が最後まで実行されてしまうので、usingを使うとインスタンスが破棄されてForm2は表示されません(正しくは一瞬表示してすぐに閉じる)ので、使用してはいけません。
フォームの切り替えについてはまた別の機会に書きます。