1

希望这张图片在这里可以阅读......

这是我第一个实现 MVP 的项目。我有三个班。我的主要形式,恰当地命名为FrmMain, FrmMainPresenter,然后MainOps它有一些额外的东西。

在 上FrmMain,我有对 的参考FrmMainPresenter,并且在FrmMainPresenter我对 有参考FrmMain

上的事件FrmMain调用 上的方法FrmMainPresenter

FrmMainPresenter应该从引用中获取控件并FrmMain调用MainOps接受 aGridControl和的方法Collection<Control>

但是,在尝试访问适当的 Grid 和 CollectionFrmMainPresenter时,它告诉我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 集合,我的演示者类看不到它。但即便如此,我也不确定如何在界面中正确定义它,以便可以在表单上实现它。

4

1 回答 1

1

您可以通过设计ControlFrmMain属性公开,也可以将公共 getter 添加到可以访问的FrmMain代码中。FrmMainPresenter

可能还有另外六种方法可以最终实现,但这些可能是实现目标的两种最常见和最简单的方法。

于 2013-10-30T18:21:54.300 回答