FormからFormを開く
どうも!こんばんは!
クローバーフィールドの伊関です。
今日もかなり本編が長いので前振りはカットします。
・Form2を開く
では、今度はForm1からForm2を開く処理を追加しましょう。イベントハンドラもプロパティウィンドウを使用しないで追加します。「Form1.cs」に下線の部分の記述を追加してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | private void Form1_Load(object sender,EventArgs e) { this.button1=new Button(); this.button1.Name="button1"; this.button1.Text="開く"; this.button1.Location=new Point(100,100); this.button1.Size=new Size(80,20); <span style="text-decoration: underline">this.button1.Click+=new EventHandler(button1_Click);</span>-① this.Contorols.Add(this.button1); } <span style="text-decoration: underline">private void button1_Click(object sender,EventArgs e)</span>② { <span style="text-decoration: underline">Form2 form2=new Form2();</span>-③ <span style="text-decoration: underline">if(form2,ShowDialog()==DialogResult.OK)</span>-④ { <span style="text-decoration: underline">label1.Text=form2.feeling;</span>-⑤ } <span style="text-decoration: underline">form2.Dispose();</span>-⑥ } |
①がイベントハンドラの登録です。 button1のクリックイベントに「button1_Click」イベントハンドラを登録しています。
②は「button1_Click」イベントハンドラの定義です。③で、先ほどWindowsフォームデザイナーで追加したFOrm2クラスからインスタンスを生成し、Form2に代入しています。Form2はクラスですから、new演算子でインスタンスを作らなければならないことは理解できますね。
④は2つの処理を行っています。まず、「form2,ShowDialog()」でform2をモーダルダイヤログボックスとして表示します。モーダルダイヤボックスを用いてる最中は、ほかのフォームを操作することができないので、制御はform2に移ります。Form2クラスの「OK」と「キャンセル」ボタンのDialogResult.OK」を「キャンセル」ボタンクリックで閉じた時には、「DialogResult.Concel」を返却してきます。そこで「==DialogResult.OK」で、form2が「OK」ボタンで閉じたかどうか判定しています。
⑤はForm2クラスのフィールドのfeelingをlabel1のテキストプロパティに代入しています。このfeelingは、Form2のテキストボックスに入力されたテキストを代入したのでしたね。
⑥では、不要になったフォームのリソースを開放しています。
以上です。
では。