【发布时间】:2013-10-30 18:09:34
【问题描述】:
希望这张图片在这里可以阅读...
这是我实施 MVP 的第一个项目。我有三个班。我的主要表单,恰当地命名为FrmMain、FrmMainPresenter,然后是MainOps,其中有一些额外的东西。
在FrmMain 上,我有对FrmMainPresenter 的引用,在FrmMainPresenter 上我有对FrmMain 的引用。
FrmMain 上的事件调用FrmMainPresenter 上的方法。
FrmMainPresenter 应该从FrmMain 引用中获取一个控件,并在MainOps 上调用一个接受GridControl 和Collection<Control> 的方法。
但是,在尝试访问 FrmMainPresenter 中的适当 Grid 和 Collection 时,它告诉我 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 集合,我的演示者类看不到它。但即便如此,我也不确定如何在界面中正确定义它,以便可以在表单上实现它。
【问题讨论】:
-
您的问题是您的代码没有编译,还是在运行时抛出异常(如果是,异常及其堆栈跟踪说明了什么)。
-
如果您使用接口,请声明一个返回所需控件的方法。在你实现接口的类中,你也实现了这个方法。 (或者,您可以在接口中声明一个带有 getter 的属性,而不是使用方法。)