今回は、C#での画面遷移について、まとめていこうと思います。
画面遷移というより、C#では、新しいフォームを立ち上げるといったイメージです。
- form.Show()
- form.ShowDialog()
を使います。
新しいフォームの作成
まずは、Form1のレイアウトを作成しましょう。画面遷移用のボタンを1つ作成してください。
「Form2を表示ボタン」を作りました。
次に、画面遷移先のFormを作成しましょう。
フォームを作成するには、プロジェクトを右クリック→追加→新しい項目 を選択しましょう。
そして、「Windowsフォーム」を選択します。この時、下のテキストボックスで名前も付けれます。
私は、Form2で作成します。画面レイアウトも好きなように作成しましょう!
ボタンを1つ作成しておいてください。
これで、遷移元画面(Form1)と遷移先画面(Form2)を作成することができました。
画面遷移(show)
それでは、画面遷移を組み込んでいきましょう。
まず、元画面(Form1)のデザインを開いて、「Form2を表示ボタン」にボタンイベントを作成してください。
private void Button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}
それでは、実行してみましょう。Form1が表示された後、ボタンを押してみましょう。
画面が表示されました。
一度、処理を終了して、Form2のボタン「画面を閉じる」にボタン処理を作成しましょう。
this.close()で画面を閉じることができます。
private void Button1_Click(object sender, EventArgs e)
{
this.Close();
}
ここまでで、新しいフォームの表示ができるようになりましたね。
ただ、画面遷移っぽくしたい、前の画面が残っているのが嫌だという人は、前の画面をVisible=Falseにしてやりましょう。
private void Button1_Click(object sender, EventArgs e)
{
//次画面を非表示
this.Visible = false;
//Form2を表示
Form2 f2 = new Form2();
f2.Show();
}
Form2では、「画面を閉じる」ボタンを押したときに、非表示にしたForm1を表示状態にします。
private void Button1_Click(object sender, EventArgs e)
{
//Form1を表示
Form1 f1 = new Form1();
f1.Visible = true;
//画面を閉じる
this.Close();
}
実行してみてください。いい感じに画面遷移ができていると思います。
モーダルウィンドウとは(ShowDialog)
ShowDialog()とは、遷移先の画面を閉じるまでは、遷移元の画面を触ることができないようにすることができます。
モーダルウィンドウといいいます。
イメージをつかむために、実行しましょう。
遷移元画面(Form1)
private void Button1_Click(object sender, EventArgs e)
{
//Form2を表示
Form2 f2 = new Form2();
f2.ShowDialog();
}
遷移先画面(Form2)
private void Button1_Click(object sender, EventArgs e)
{
//画面を閉じる
this.Close();
}
実行してみてください。遷移先の画面を閉じるまでは、遷移元の画面が触れないと思います。
これが、モーダルウィンドウです。画面遷移については以上になります。
まとめ
別のフォームを開くときは、Form.Show();
モーダルウィンドウで開くときは、Form.ShowDialog();