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

デリゲートとイベントまたはコンストラクターを使用して Windows フォーム間で変数を渡すにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-03 21:34:39174ブラウズ

How to Pass Variables Between Windows Forms Using Delegates and Events or Constructors?

デリゲートとイベントを使用した Windows フォーム フォーム間での変数の受け渡し

このシナリオでは、メイン フォームと "設定" 子フォームがあります。フォームの場合、変数を子フォームに渡す一般的なアプローチは、デリゲートとevents.

ステップ 1: デリゲートとイベントを初期化する

メイン フォームで、データ転送を処理するためのデリゲートとイベントを作成します:

public partial class MainForm : Form
{
    /// <summary>
    /// Delegate to send data between forms
    /// </summary>
    public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);

    /// <summary>
    /// Event of the delegate
    /// </summary>
    public event PageInfoHandler PageInfoRetrieved;
}

ステップ 2: イベントで変数を渡すハンドラー

メイン フォームの [設定] ボタンをクリックすると、渡したい変数を使用してイベント引数インスタンスを作成し、イベントを発生させます:

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

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

ステップ 3: 子フォームで変数を取得する

「設定」フォームで、対応するイベント ハンドラーをオーバーライドしてイベントを処理します:

public partial class SettingsForm : Form
{
    protected override void OnShown(EventArgs e)
    {
        base.OnShown(e);

        // Retrieve the event arguments
        PageInfoEventArgs args = this.Tag as PageInfoEventArgs;
        if (args != null)
        {
            // Access the passed variable
            string receivedText = args.PageInfo;
        }
    }
}

コンストラクターを使用して変数を渡す

または、変数をコンストラクターに直接渡すこともできます。子フォーム:

public partial class SettingsForm : Form
{
    private string receivedText;

    public SettingsForm(string text)
    {
        this.receivedText = text;
    }
}

この場合、子フォーム インスタンスを作成します。引数として変数を使用します:

SettingsForm settingsForm = new SettingsForm(SomeString);

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。