モジュール式/ドッキング可能なサブフォーム(WeifenLuo)を持つWinFormがあります。フォーム間でイベント/情報を渡すベストプラクティスは何ですか?C#イベントの配布
例:SubForm1の "SelectionChanged"イベントで、SubForm2で強調表示されているものを変更します。問題は、SubForm2-Tabが1つまたは複数存在する可能性があります。サブフォームの新しいインスタンスがユーザによって要求された場合
現在、このような関数が呼び出されます。
private void toolStripMenuItemSubForm1_Click(object sender, EventArgs e)
{
SubForm1 subForm1 = new SubForm1();
subForm1.Show(dockPanelMain, DockState.Document);
}
のMainFormはdockPanelMain.Contents
を除くすべてのサブフォームのレコードがありません。
編集:フォームが相互にやりとりする方法や、イベント自体がどのように機能するかを知っています。私の問題は、SubForm1のイベントが異なる他のSubFormsを変更する可能性がありますが、特定の時点で存在しない場合や、複数のインスタンスが存在する可能性があり、単一のイベントごとにMainFormを通じてチェーンしたくない場合です。
[C#で2つのウィンドウフォーム間で通信する]の可能な複製(http://stackoverflow.com/questions/1665533/communicate-between-two-windows-forms-in-c-sharp) –
イベントを追加して立ち上がりそれ。誰か(別のフォーム)は、それを購読/購読解除して何かをするかもしれません。 – Sinatr
これは本当に広すぎです...しかしここに私の2セントはありますが、グローバルイベントハブはどうですか?イベントを受け取る必要があるフォームを作成するときにグローバルハブがある場合、それをサブスクライブする必要があります。清潔でシンプル。 – Gusman