最も単純な ShowDialog() と、ビジネス ロジックとインターフェイスを分離する精巧な方法との間の別の方法を提案させてください。
Form2 で新しいイベントを作成したいと考えています。私はこれをイベントと呼んでいますSettingsSaved
Form2 でグローバル宣言として追加
public delegate void SettingsSavedEventHandler(object sender, SettingsSavedEventArgs e);
public event SettingsSavedEventHandler SettingsSaved;
および cmdSave_Click イベントで
if(SettingsSaved != null)
{
SettingsSavedEventArgs ss = new SettingsSavedEventArgs() { DeviceIndex = deviceIndex};
SettingsSaved(this, ss);
}
クラス SettingsSavedEventArgs のスケルトン
public class SettingsSavedEventArgs: EventArgs
{
public int DeviceIndex {get; set;}
// Other settings could be added here
}
Form2 を呼び出すコードで、イベントをサブスクライブし、ユーザーが Form2 の [保存] ボタンをクリックしたときに通知を受け取ることができます。
Form2 videoSettings = new Form2();
videoSettings.SettingsSaved += new SettingsSavedEventHandler(SavedHandler);
videoSettings.Show();
....
private void SavedHandler(object sender, SettingsSavedEventArgs ss)
{
int deviceIndex = ss.DeviceIndex;
}
オブザーバー パターン