あなたはこのように試すことができます....
これはMediatorパターンの唯一の初歩的な実装であることに注意してください。どんなことが起こっているのかをより良く理解するためには、そのパターンとデザインパターン全般を読むことを強くお勧めします。
これもまたサンプルですが、いくつかの基本的なエラーチェックが行われています。
public partial class MainForm : Form
{
private FormMediator _formMediator;
public MainForm()
{
InitializeComponent();
}
public void SomeMethodThatOpensTheSubForm()
{
SubForm subForm = new SubForm();
_formMediator = new FormMediator(this, subForm);
subForm.Show(this);
}
}
をメディエータの変更の実装は次のようになります:
フォームの宣言はこのような何かを見に行くされて
public class FormMediator
{
private Form _subForm;
private Form _mainForm;
public FormMediator(Form mainForm, Form subForm)
{
if (mainForm == null)
throw new ArgumentNullException("mainForm");
if (subForm == null)
throw new ArgumentNullException("subForm");
_mainForm = mainForm;
_subForm = subForm;
_subForm.FormClosed += MainForm_FormClosed;
}
void MainForm_FormClosed(object sender, FormClosedEventArgs e)
{
try
{
_mainForm.Refresh();
}
catch(NullReferenceException ex)
{
throw new InvalidOperationException("Unable to close the Main Form because the FormMediator no longer has a reference to it.", ex);
}
}
}
私は願っていますが、それはあなたを助けます....