希望这张图片在这里可读......
这是我实施MVP的第一个项目。我有三节课。我的主要形式,恰当地命名为FrmMain
,FrmMainPresenter
,然后是MainOps
,其中包含一些额外的内容。
在FrmMain
上,我有FrmMainPresenter
的引用,在FrmMainPresenter
上我引用了FrmMain
。
FrmMain
上的活动会在FrmMainPresenter
上调用方法。
FrmMainPresenter
假设从FrmMain
引用中获取控件,并在MainOps
上调用接受GridControl
和{{{ 1}}。
但是,在尝试访问Collection<Control>
中的相应网格和集合时,它告诉我FrmMainPresenter
不包含这些控件的定义
FrmMain
上的代码:
FrmMain
private void genericCheckbox_CheckedChanged(object sender, EventArgs e)
{
_presenter.CheckBoxCheckedChanged();
}
上的代码:
FrmMainPresenter
不确定我做错了什么。我不认为这是正确的,但我唯一的猜测是在Designer文件中将必要的控件设置为public,但这不起作用。相同的结果。
我想这个问题是因为我的表单界面没有定义gridview / controls集合,我的演示者类无法看到它。但即便如此,我也不确定如何在界面中正确定义它,以便我可以在表单上实现它。
答案 0 :(得分:1)
您可以通过设计器属性公开Control
FrmMain
公开,也可以将公共getter添加到FrmMain
可以访问的FrmMainPresenter
代码中。
可能有另外六种方法可以最终实现,但这些可能是实现目标的两种最常见和最简单的方法。