1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C#のWindows Formsアプリでフォーム間でデータをやり取りする

Last updated at Posted at 2025-03-15

1. はじめに

  • C#のWindows Formsアプリでフォーム間でデータをやり取りしたい
  • フォーム間でデータをやり取りする方法を調べておきたい

2. 開発環境

  • C#
  • .NET 8
  • Visual Studio 2022
  • Windows 11

3. コンストラクタを使用する方法

新しいフォームを作成するときに、コンストラクタの引数としてデータを渡す

手順

  • 1 . フォームのコンストラクタを修正
  • 2 . データを受け取って表示

サンプルコード

Form1(データを送る側)

Form1.cs
private void btnOpenForm2_Click(object sender, EventArgs e)
{
    string data = txtInput.Text; // テキストボックスの内容を取得
    Form2 form2 = new Form2(data); // データを渡してForm2を作成
    form2.Show();
}

Form2(データを受け取る側)

Form2.cs
public partial class Form2 : Form
{
    public Form2(string receivedData)
    {
        InitializeComponent();
        lblReceivedData.Text = receivedData; // ラベルに受け取ったデータを表示
    }
}

4. プロパティを使用する方法

フォームのプロパティを使ってデータを渡す方法

サンプルコード

Form1(データを送る側)

Form1.cs
private void btnOpenForm2_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.ReceivedData = txtInput.Text; // プロパティを設定
    form2.Show();
}

Form2(データを受け取る側)

Form2.cs
public partial class Form2 : Form
{
    public string ReceivedData { get; set; } // データを格納するプロパティ

    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        lblReceivedData.Text = ReceivedData; // ラベルにデータを表示
    }
}

5. 静的変数を使用する方法

グローバルなデータとして、静的変数を使ってやり取りする方法

サンプルコード

データを共有するクラス

DataStore.cs
public static class DataStore
{
    public static string SharedData { get; set; }
}

Form1(データを送る側)

Form1.cs
private void btnOpenForm2_Click(object sender, EventArgs e)
{
    DataStore.SharedData = txtInput.Text; // データを設定
    Form2 form2 = new Form2();
    form2.Show();
}

Form2(データを受け取る側)

Form2.cs
private void Form2_Load(object sender, EventArgs e)
{
    lblReceivedData.Text = DataStore.SharedData; // ラベルにデータを表示
}

6. イベントを使用する方法

データを受け取る側のフォームでイベントを定義し、送る側のフォームがイベントを起動する方法

サンプルコード

Form1(データを送る側)

Form1.cs
private void btnOpenForm2_Click(object sender, EventArgs e)
{
    Form2 form2 = new Form2();
    form2.DataReceived += (data) => { lblStatus.Text = data; }; // イベントハンドラを設定
    form2.Show();
}

Form2(データを受け取る側)

Form2.cs
public partial class Form2 : Form
{
    public event Action<string> DataReceived;

    public Form2()
    {
        InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {
        DataReceived?.Invoke("Form2が開かれました");
    }
}

7. 参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?