WinForms フォーム間通信 チュートリアル(コンストラクタを活用)
目次
目的
このチュートリアルでは、以下のことを学びます。
- Visual Studio で新しい WinForms アプリケーションを作成する方法
- 2 つのフォーム(Form1 と Form2)の作成とデザイン
- Form2 のボタンをクリックして Form1 のラベルのテキストを更新する方法
必要なもの
- Visual Studio(C# の WinForms アプリケーションが作れる環境)
- 基本的な C# の知識(変数やメソッドの概念など)
ステップ 1: 新しいプロジェクトの作成
- Visual Studio を起動します。
- 「新しいプロジェクト」を選択し、「Windows Forms アプリケーション」 を選びます。
- プロジェクト名(例:
WinFormsTutorial
)を入力してプロジェクトを作成します。
ステップ 2: Form1 のデザイン
- Form1 のデザイナー画面で、以下のコントロールを追加します。
- Label
- 名前:
label1
- 表示テキストは初めは任意(例:「初期テキスト」)
- 名前:
- Button
- 名前:
buttonOpenForm2
- 表示テキスト: 「フォーム2を開く」
- 名前:
- Label
- Button をダブルクリックして、
buttonOpenForm2_Click
イベントハンドラを自動生成します。
ステップ 3: Form1 のコードを編集
Form1 のコードに、Form2 を呼び出すコードと、Form2 から呼び出される「ラベル更新用の公開メソッド」を追加します。
Form1.cs
using System;
using System.Windows.Forms;
namespace WinFormsTutorial
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// Form2 から呼び出される公開メソッド
// label1 のテキストを更新します
public void SetLabelText(string text)
{
label1.Text = text;
}
// 「フォーム2を開く」ボタンのクリックイベント
private void buttonOpenForm2_Click(object sender, EventArgs e)
{
// 現在の Form1 を渡して Form2 を生成
Form2 form2 = new Form2(this);
form2.Show();
}
}
}
ポイント:
SetLabelText
メソッドを公開(public)にすることで、Form2 からラベルのテキストを変更できるようにしています。
ステップ 4: Form2 の作成とデザイン
- ソリューションエクスプローラーでプロジェクトを右クリックし、「追加」→「Windowsフォーム」 を選択して、名前を
Form2.cs
とします。 - Form2 のデザイナー画面で、Button を追加します。
- 名前:
buttonUpdateLabel
- 表示テキスト: 「ラベル更新」
- 名前:
- Button をダブルクリックして、
buttonUpdateLabel_Click
イベントハンドラを自動生成します。
ステップ 5: Form2 のコードを編集
Form2 は、Form1 のインスタンスをコンストラクタで受け取り、ボタンをクリックしたときに Form1 の SetLabelText
メソッドを呼び出してラベルを更新します。
Form2.cs
using System;
using System.Windows.Forms;
namespace WinFormsTutorial
{
public partial class Form2 : Form
{
// Form1 のインスタンスを受け取るフィールド
private Form1 mainForm;
// コンストラクタ:Form1 のインスタンスを受け取ります
public Form2(Form1 form1)
{
InitializeComponent();
mainForm = form1;
}
// 「ラベル更新」ボタンのクリックイベント
private void buttonUpdateLabel_Click(object sender, EventArgs e)
{
if (mainForm != null)
{
// Form1 の SetLabelText メソッドを使ってラベルのテキストを変更
mainForm.SetLabelText("更新されました!");
}
}
}
}
ポイント:
- Form2 のコンストラクタで受け取った Form1 のインスタンスを利用し、Form1 内の公開メソッド
SetLabelText
を呼び出しています。
ステップ 6: アプリケーションの動作確認
- プロジェクトを ビルド し、実行 します。
- 起動した Form1 が表示されます。
- 「フォーム2を開く」ボタンをクリックすると Form2 が表示されます。
- Form2 の「ラベル更新」ボタンをクリックすると、Form1 の label1 のテキストが 「更新されました!」 に変わることを確認してください。
まとめ
このチュートリアルでは、
- Visual Studio でのプロジェクト作成
- フォームにコントロールを配置する方法
- フォーム間でデータ(ここではラベルのテキスト)を渡す基本的な方法
を学びました。
最初は、Form1 に公開メソッドを用意して、Form2 からそのメソッドを呼び出す方法が最も分かりやすい実装です。
慣れてきたら、イベントやデータバインディングなど、より高度な方法にも挑戦してみてください。
この手順に沿って進めることで、WinForms のフォーム間通信の基礎が理解できるはずです。
まずはシンプルな実装から始め、徐々に他の手法も学んでいきましょう。
ディスカッション
コメント一覧
まだ、コメントがありません