大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

FormからFormを開く

著者:伊関星児
公開日:2019/05/29
最終更新日:2019/05/29
カテゴリー:技術情報
タグ:

どうも!こんばんは!

 

クローバーフィールドの伊関です。

 

今日もかなり本編が長いので前振りはカットします。

 

・Form2を開く

では、今度はForm1からForm2を開く処理を追加しましょう。イベントハンドラもプロパティウィンドウを使用しないで追加します。「Form1.cs」に下線の部分の記述を追加してください。

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);
 
 this.button1.Click+=new EventHandler(button1_Click);-①
 
 this.Contorols.Add(this.button1);
}
private void button1_Click(object sender,EventArgs e)②
{
 Form2 form2=new Form2();-③
 if(form2,ShowDialog()==DialogResult.OK)-④
 {
  label1.Text=form2.feeling;-⑤
 }
 form2.Dispose();-⑥
}

①がイベントハンドラの登録です。 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のテキストボックスに入力されたテキストを代入したのでしたね。

⑥では、不要になったフォームのリソースを開放しています。

 

以上です。

 

では。

    上に戻る