如何在winforms mvp模式中实现usercontrol?

我想实现MVP模式。 我有一个具有一些文本框的用户控件,当我把它放在表单中时,我从usercontrol调用一个方法并填充文本框。 但在mvp模式中,我不知道如何访问usercontrol1.fill() 。 你有一个可以帮助我的例子吗?

这是模式的示例实现。 Presenter只知道具有show方法的接口。 Presenter调用它,但唯一的forms(也称为View)实现了表单的显示方式。

 public interface IMyFormView { void Show(); } public class MyForm : IMyFormView { public MyForm() { var presenter = new MyFormPresenter(this); presenter.Init(); } public void Show() { usercontrol1.fill(); } } public class MyFormPresenter { private IMyView _view; public MyFormPresenter(IMyView view) { _view = view; } public void Init() { _view.Show(); } } 

如果需要将数据传递到视图中,则可以通过Show -method传递视图模型或在视图上设置自定义属性。

如果将用户控件放入表单中,并假设表单是项目中的视图,则此视图由谁负责访问用户控件。 您不应直接从演示者访问任何用户控件的方法。 事实上,演示者不应该知道这些方法的存在甚至用户控制。 演示者只知道是否存在实现该视图的现有接口的视图。 因此,您的视图(表单)将知道并调用此usercontrol的方法。 要从演示者传递值以填充表单中放置的用户控件,视图实现的接口应使用set方法公开属性(如果您还计划读取这些值,则使用get方法)。 当您的视图实现此接口时,在实现此属性的set方法时,您可以调用用户控件的任何方法,因为用户控件包含在您的表单中,并且您的表单知道用户控件的存在及其方法。 从那里访问它不应该有任何问题。

同样,如果需要从用户控件中读取值,则应在视图中对此属性的get实现执行此操作。 演示者只使用界面中定义的get方法读取属性,视图将知道如何访问值并返回它们。