うまくいけば、この画像はここで読めます...
これは、MVP を実装する私の最初のプロジェクトです。私は3つのクラスを持っています。、 という適切な名前FrmMain
のメイン フォームにはFrmMainPresenter
、MainOps
いくつかの追加要素があります。
FrmMain
では への参照がありFrmMainPresenter
、 ではFrmMainPresenter
への参照がありFrmMain
ます。
上のイベントは、上FrmMain
のメソッドを呼び出しますFrmMainPresenter
。
FrmMainPresenter
参照からコントロールを取得し、およびを受け入れるメソッドを呼び出すことになっています。FrmMain
MainOps
GridControl
Collection<Control>
ただし、 内の適切なグリッドとコレクションにアクセスしようとすると、それらのコントロールの定義が含まれFrmMainPresenter
てFrmMain
いないことがわかります。
コードFrmMain
:
private void genericCheckbox_CheckedChanged(object sender, EventArgs e)
{
_presenter.CheckBoxCheckedChanged();
}
コードFrmMainPresenter
:
public void CheckBoxCheckedChanged()
{
if (!_view.SuppressCheckedChanged)
_mo.UpdateFilter(_view.gdcSVNDefaultView, _view.Controls);
}
何が間違っているのかわかりません。これが正しいとは思いませんでしたが、私の唯一の推測では、Designer ファイルで必要なコントロールを public に設定することでしたが、うまくいきませんでした。同じ結果です。
問題は、フォームのインターフェイスに gridview / controls コレクションが定義されておらず、プレゼンター クラスがそれを認識できないためだと思います。しかし、それでも、フォームに実装できるように、インターフェイスで適切に定義する方法がわかりません。