Windows アプリケーションで画面遷移をしてみよう(その1)
Windows アプリケーションの画面遷移をやってみましょう。
画面遷移で一番簡単な方法ですが、メニューのフォームから、違う画面を表示してみます。
※解説に用いた Visual Studio 2005 の Edition は、Team System Edition です。
サンプルのダウンロード
■プロジェクトの作成
プロジェクトの作成についてはWindows アプリケーションを作ってみようと
全く同じなのでここでは割愛します。
※今回は、プロジェクト名を MyWinApp02 としました。
■フォームの追加
ソリューションエクスプローラ(IDE 上に無い人は、メニューバーの[表示]→[ソリューション エクスプローラ]で表示させてくださいね)で、
プロジェクトを選択して、右クリックします。
下図のようなコンテキストメニューが表示されます。

[追加]→[Windows フォーム]をクリックします。

ファイル名は任意で入力して[OK]を押下して下さい。私はファイル名を ChildForm.vb としました。
ついでに、Form1 の名前もそのままだとメニュー画面である事が解りにくいので、
MenuForm.vb にします。
ソリューションエクスプローラで、Form1 を選択し、右クリックして[プロパティ]をクリックして下さい。
↓のプロパティウィンドウが出現します。

ファイル名に、MenuForm.vb と入力して、Enter キーを押下します。
メニューバーの[ツール]→[オプション]→[プロジェクト及びソリューション]の
[ファイル名の変更時にシンボルの名前変更を確認]にチェックが入っている場合、以下のメッセージが現れます。

[はい]ボタンを押下します。
最終的にはこんな感じになってれば OK です。

Visual Studio では、ファイル名=クラス名である必要はありません。
別名で管理する事が可能です。上記のメッセージが出ない設定・もしくは上記メッセージで
[いいえ]を選択した場合には、MainForm.vb というファイルの中に、Form1 というクラスが存在する事になります。
もし、後でファイル名と同じにしたくなった場合は、コードビュー上でクラス名を変更する必要があります。
ファイル名≠クラス名だと解りにくいし、変えたくなった時に面倒なので、
できれば[ファイル名の変更時にシンボルの名前変更を確認]にチェックを入れておく事をお勧めします。
■コントロールの配置
フォームの追加で追加したフォームに、コントロールを配置します。
コントロールの配置の仕方については、Windows アプリケーションを作ってみようとほぼ同じなので割愛します。
このような感じでコントロールを配置して下さい。
MenuForm

ChildForm

■コードを入力
ChildForm を デザイナ上または、ソリューションエクスプローラ上で、[コードの表示]をクリックし、
コードビューに切り替えてください。
以下のコードを入力します。
Public Class ChildForm Private m_inputedName As String Public WriteOnly Property InputedName() As String Set(ByVal value As String) Me.m_inputedName = value End Set End Property Private Sub ChildForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' MenuForm から 渡された値を Label に表示 Me.Label1.Text = Me.m_inputedName + "さん、こんにちは!" End Sub Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub End ClassChildForm 同様、MenuForm にも以下のコードを入力します。
Public Class MenuForm Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim inputedString As String = Me.TextBox1.Text ' 入力されていなかった時はエラーメッセージを出力して処理終了 If inputedString = "" Then MessageBox.Show("お名前をテキストボックスに入力して下さい", _ Me.Text, _ MessageBoxButtons.OK, _ MessageBoxIcon.Warning) Me.TextBox1.Focus() Return End If ' 入力されていた時は ChildForm を モーダル表示 Dim myChild As ChildForm Try myChild = New ChildForm myChild.InputedName = inputedString myChild.ShowDialog(Me) Finally If myChild IsNot Nothing Then myChild.Dispose() End Try End Sub End Class
■実行しよう!
さぁ、コードの入力も終わったし、実行...ちょっと待って下さい。
プログラムが開始された時に、一番最初に表示するフォームが MenuForm である事を確認します。
ソリューションエクスプローラで、[My Project]という項目があると思います。
そいつをダブルクリックして下さい。

注意すべき点は、[アプリケーション]タブの[スタートアップフォーム]です。
MenuForm になっていますか?
もし、なっていなければ DropDownList より選択して MenuForm にして下さい。
確認及び変更が終わったら、メニューバーの[ファイル]→[Form1.vb の保存]で、保存しましょう。
メニューバーの[デバッグ]→[デバッグ実行]をクリックして実行します。
↓こんな画面が出現しましたか?

TextBox に自分の名前などを入力して、Button をクリックしてみましょう。
ポップアップで、ChildForm が出現します。ちゃんと MenuForm で入力した値が表示されたでしょうか?

うまくいったら、今度はコントロールを変えたり、メッセージを変えたりして
色々遊んでみてください。