ホームページ > バックエンド開発 > C++ > Windows フォーム間でデータを効率的に受け渡すにはどうすればよいですか?

Windows フォーム間でデータを効率的に受け渡すにはどうすればよいですか?

DDD
リリース: 2025-01-03 20:46:40
オリジナル
931 人が閲覧しました

How to Efficiently Pass Data Between Windows Forms?

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

Windows フォーム アプリケーションでは、多くの場合、複数のフォーム間でデータを共有する必要があります。あるフォームが別のフォームを開くとき、新しいフォームが使用する特定の情報を渡す必要がある場合があります。これを実現するための一般的なアプローチの 1 つは、デリゲートを使用することです。

問題の説明

特定のシナリオでは、メイン フォームに子フォームを開く「設定」という名前のボタンがあります。 「設定フォーム」と呼ばれます。要件は、変数の値を新しいフォームに表示できるように、設定フォームを開いたときに変数を渡すことです。

デリゲート アプローチ

解決するにはこの問題を解決するには、メイン フォームでカスタム イベント ハンドラーを受け入れるデリゲートを定義できます。次に、イベント ハンドラーは、イベント引数クラスを通じて変数を子フォームに渡します。

指定したコード スニペットでは、次のデリゲートとイベントが MainForm クラスで定義されています。

public partial class MainForm : Form
{
    public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);
    public event PageInfoHandler PageInfoRetrieved;
    ...
}
ログイン後にコピー

変数値を保持するには、PageInfoEventArgs クラスを定義する必要があります。

public class PageInfoEventArgs : EventArgs
{
    public string SomeString;
    
    public PageInfoEventArgs(string someString)
    {
        SomeString = someString;
    }
}
ログイン後にコピー

「設定」メイン フォームで ボタンをクリックすると、変数値を使用して PageInfoEventArgs のインスタンスが作成され、PageInfoRetrieved イベントが発生します。設定フォームのイベント ハンドラーは変数を受け取り、それを使用して値を表示できます。

コンストラクター アプローチ

もう 1 つのアプローチは、変数を として渡すことです。パラメータを設定フォームのコンストラクターに追加します。その後、フォームのロジックでコンストラクター パラメーターを使用できます。

たとえば、次のようにすることができます。

public class SettingsForm : Form
{
    private string _variable;
    
    public SettingsForm(string variable)
    {
        _variable = variable;
    }
    
    ... // Use _variable as needed
}
ログイン後にコピー

メインフォームでは、次のように設定フォームを作成します。

SettingsForm settingsForm = new SettingsForm("value");
settingsForm.ShowDialog();
ログイン後にコピー

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

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