ホームページ > バックエンド開発 > C++ > デリゲートとイベント ハンドラーを使用して Windows フォーム間でデータを渡すにはどうすればよいですか?

デリゲートとイベント ハンドラーを使用して Windows フォーム間でデータを渡すにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-04 17:30:39
オリジナル
894 人が閲覧しました

How Can I Pass Data Between Windows Forms Using Delegates and Event Handlers?

Windows フォーム間でのデータの受け渡し

Windows フォーム アプリケーションで複数のフォームを管理する場合、複数のフォーム間でデータを共有する必要がある状況が発生することがあります。彼ら。この記事では、メイン フォームから「設定」フォームに変数を渡し、新しいフォームでその情報を表示できるようにする問題について説明します。

デリゲートとイベント ハンドラーの使用

メイン フォームで指定したコードは、デリゲートとイベント ハンドラーを使用して設定フォームにデータを送信します。デリゲートは、特定の入力パラメータと出力パラメータを使用してメソッドのシグネチャを定義する型です。イベント ハンドラーにデリゲートを割り当てることで、イベントの発生時に呼び出されるメソッドを登録できます。

この場合、メイン フォームは、PageInfoEventArgs 型の入力パラメーターを持つデリゲート PageInfoHandler を作成します。 PageInfoEventArgs クラスには、設定フォームに渡すデータ (この場合は文字列) が含まれています。 [設定] ボタンをクリックすると、イベント ハンドラー (OnPageInfoRetrieved) が呼び出され、登録されたメソッド (この場合は PageInfoRetrieved) が呼び出されます。

設定フォームでのデータの取得

設定フォームでは、渡されたデータにアクセスできるようにするプロパティまたはメソッドを定義する必要がありますメインフォームから。推奨される解決策では、コンストラクターを使用して文字列を設定フォームに渡します。このコンストラクターは文字列をプライベート メンバー変数に保存し、パブリック getter メソッドを通じてアクセスできます。

完全なコード例

完全なコード例は次のとおりです。

MainForm.cs

public partial class MainForm : Form
{
    public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);
    public event PageInfoHandler PageInfoRetrieved;

    private void toolStripBtnSettings_Click(object sender, EventArgs e)
    {
        PageInfoEventArgs args = new PageInfoEventArgs(SomeString);
        OnPageInfoRetrieved(args);

        SettingsForm settingsForm = new SettingsForm(SomeString);
        settingsForm.ShowDialog();
    }

    private void OnPageInfoRetrieved(PageInfoEventArgs args)
    {
        if (PageInfoRetrieved != null)
            PageInfoRetrieved(this, args);
    }
}
ログイン後にコピー

SettingsForm.cs

public class SettingsForm : WinForm
{
    private string m_Data;

    public SettingsForm(string data)
    {
        m_Data = data;
    }

    public string Data { get { return m_Data; } }
}
ログイン後にコピー

以上がデリゲートとイベント ハンドラーを使用して Windows フォーム間でデータを渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート