让我建议另一种方式,介于最简单的 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;
}
观察者模式