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

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

DDD
リリース: 2025-01-03 19:18:42
オリジナル
779 人が閲覧しました

How to Pass Data Between Windows Forms Using Delegates?

デリゲートを使用した Windows フォーム間でのデータの受け渡し

Windows フォーム アプリケーションで複数のフォームを操作する場合、多くの場合、データを受け渡すことが必要になります。彼らの間で。これを達成するための一般的なアプローチは、デリゲートを使用することです。デリゲートを使用してデータ受け渡しを実装する方法は次のとおりです。

デリゲートの作成

まず、データ転送のコールバック メソッドとして機能するデリゲートを作成する必要があります。 C# では、これは次のように実行できます。

public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);
ログイン後にコピー

このデリゲートは、送信者オブジェクト (通常はデータを送信するフォーム) とイベント引数オブジェクト (実際のデータを含む) の 2 つのパラメーターを取るメソッドを宣言します。データ).

メイン内でのデリゲートの使用

フォームでは、デリゲートのインスタンスを作成し、子フォームにデータを渡したいときにいつでもイベントを発生させることができます。例:

public partial class MainForm : Form
{
    // Declare the delegate instance
    public event PageInfoHandler PageInfoRetrieved;

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

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

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

データの取得

子フォーム (この場合は、SettingsForm) 内で、デリゲート イベントをサブスクライブして、データ。これは、子フォームのコンストラクターまたはその初期化コードで実行できます。例:

public class SettingsForm : Form
{
    public SettingsForm()
    {
        // Subscribe to the delegate event
        if (MainForm.PageInfoRetrieved != null)
            MainForm.PageInfoRetrieved += new PageInfoHandler(OnPageInfoRetrieved);
    }

    private void OnPageInfoRetrieved(object sender, PageInfoEventArgs e)
    {
        // This method will be called when the PageInfoEventArgs is raised
        // in the main form. You can access the data from the event argument here.
        // ...
    }
}
ログイン後にコピー

データの使用

子フォームでデータを取得したら、提供されたイベント引数を使用して実際のデータにアクセスできます。 。この例では、データは PageInfoEventArgs オブジェクトのプロパティとして渡されます。たとえば、次のように使用できます。

// In the SettingsForm
private void DisplayData()
{
    // Get the data from the event arguments
    string data = e.Data;

    // Display or use the data in the child form
    // ...
}
ログイン後にコピー

次の手順に従うことで、デリゲートを使用して複数の Windows フォーム間でデータを効率的に受け渡すことができ、アプリケーション内のフォーム間の通信とデータ交換が可能になります。

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

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