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 サイトの他の関連記事を参照してください。