如何使用MVP访问表单的控件

时间:2013-10-30 18:09:34

标签: c# winforms .net-3.5 mvp

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

这是我实施MVP的第一个项目。我有三节课。我的主要形式,恰当地命名为FrmMainFrmMainPresenter,然后是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集合,我的演示者类无法看到它。但即便如此,我也不确定如何在界面中正确定义它,以便我可以在表单上实现它。

1 个答案:

答案 0 :(得分:1)

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

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