Windowsフォームアプリケーションにおけるフォーム間データの受け渡し

2024年8月22日

この資料では、Windowsフォームアプリケーションにおいて、フォーム間でデータを受け渡す方法を解説します。具体的には、フォーム1(Form1)からフォーム2(Form2)を表示し、双方でデータをやり取りするサンプルを作成します。

1. プロジェクトの作成

1.1 新規プロジェクトの作成

  • プロジェクト名: FormTransData
  • 空のフォーム Form1 と Form2 を2つ作成します。

1.2 フォームの追加

  • ソリューションエクスプローラでプロジェクトを右クリックし、新しいフォームを追加します。

1.3 ボタンの追加

  • Form1 にボタン(button1)を1つ追加します。
  • Form2 にもボタン(button1)を1つ追加します。
  • ツールボックスからそれぞれのフォームにドラッグ&ドロップして追加します。

1.4 クリックイベントの作成

  • Form1 と Form2 のボタンを 直接ダブルクリック します。これにより、Click イベントのハンドラが自動的に作成され、コードエディタに移動します。
  • 作成されたイベントハンドラ内に、必要なコードを記述します。

2. Form2の表示手順

2.1 Form2の表示コードの記述

  • Form1 のボタン(button1)のクリックイベントに、Form2のインスタンスを作成して表示するコードを記述します。
private void button1_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.Show();
}

2.2 動作確認の重要性

  • プログラムを実行し、Form1のボタンをクリックしてForm2が表示されることを確認します。
  • なぜ確認するのか?
    • Form2が表示されることで、Click イベントが正しく設定され、イベントハンドラが正しく機能していることがわかります。これにより、次のステップでの作業を進めるための基盤が確保されます。

3. Form2からForm1へのデータ受け渡し

3.1 Form2側作業

  • Form2に受け渡し用のデータを作成します。
public int form2Point = 200;

3.2 Form1側作業

  • button1_Click イベントで、Form2のデータを受け取りボタンに表示します。
int point = form2.form2Point;
button1.Text = point.ToString();

3.3 動作確認の重要性

  • プログラムを実行し、ボタンをクリックしてForm2のデータがForm1のボタンに表示されることを確認します。
  • なぜ確認するのか?
    • Form2からデータが正しく取得されていることを確認することで、フォーム間のデータ受け渡しが正常に行われていることが確認できます。これにより、次の手順でのデータ処理が正しく行われることを保証します。

4. Form1からForm2へのデータ受け渡し

4.1 Form1側作業

Form1からForm2にデータを受け渡す準備を行います。

Form1にデータを作成:

public int form1Point = 100;

Form2のインスタンスを作成する際に、Form1のインスタンスを渡します:

Form2 form2 = new Form2(this);

4.2 Form2側作業

Form1から受け取ったデータを使用してForm2を処理します。

Form1のインスタンスを保持するための変数を追加し、コンストラクタで受け取ります:

private Form1 form1;

public Form2(Form1 form1)
{
    InitializeComponent();
    this.form1 = form1;
}

Form2のボタンクリックイベントでForm1のデータを取得し、ボタンに表示します:

private void button1_Click(object sender, EventArgs e)
{
    int point = form1.form1Point;
    button1.Text = point.ToString();
}

4.3 動作確認の重要性

  • プログラムを実行し、Form1のボタンをクリックしてForm2が表示されること、さらにForm2のボタンをクリックしてForm1のデータが表示されることを確認します。
  • なぜ確認するのか?
    • Form1からForm2へのデータ受け渡しが正しく行われていることを確認することで、フォーム間の双方向通信が正常に動作していることを確認できます。これにより、アプリケーションが期待通りに動作することを保証します。

5. 完成したサンプルコード

5.1 Form1.cs

using System;
using System.Windows.Forms;

namespace FormTransData
{
    public partial class Form1 : Form
    {
        public int form1Point = 100;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2(this);
            form2.Show();
            int point = form2.form2Point;
            button1.Text = point.ToString();
        }
    }
}

5.2 Form2.cs

using System;
using System.Windows.Forms;

namespace FormTransData
{
    public partial class Form2 : Form
    {
        private Form1 form1;
        public int form2Point = 200;

        public Form2()
        {
            InitializeComponent();
        }

        public Form2(Form1 form1)
        {
            InitializeComponent();
            this.form1 = form1;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int point = form1.form1Point;
            button1.Text = point.ToString();
        }
    }
}

6. まとめ

この技術資料では、Windowsフォームアプリケーションにおけるフォーム間のデータ受け渡し方法を解説しました。各手順ごとに動作確認の重要性を説明し、フォーム間でデータを相互にやり取りする実践的なアプリケーションを構築できるようになっています。