Мне нужно использовать форму в качестве MdiParent, а также использовать шаблон MVP для ее реализации.Сначала я реализую родительский интерфейс IPresenter, как показано ниже:
public interface IPresenter<TView>
{
TView View { get; }
void Run();
}
Затем я пишу родительский интерфейс IView, как показано ниже:
public interface IView<TPresenter>
{
TPresenter Presenter { get; set; }
void Run();
}
Теперь я пишу основную форму предъявителя следующим образом:
public interface IViewMainFormPresenter : IPresenter<IViewMainForm>
{
void RunChildForm();
}
А класс предъявителя главной формы выглядит следующим образом:
public class ViewMainFormPresenter : IViewMainFormPresenter
{
private readonly IViewMainForm _view;
private readonly IApplicationController _appController;
public ViewMainFormPresenter(IViewMainForm view, IApplicationController appController)
{
_view = view;
_appController = appController;
_view.Presenter = this;
}
public IViewMainForm View
{
get
{
return _view;
}
}
public void Run()
{
_view.Run();
}
}
Основной интерфейс представления формы:
public interface IViewMainForm : IView<IViewMainFormPresenter>
{
}
интерфейс контроллера приложения:
public interface IApplicationController
{
void RunChildForm();
}
Класс контроллера приложения:
public class ApplicationController : IApplicationController
{
public void RunChildForm()
{
using (var view = new ViewChildForm())
{
var presenter = new ViewChildFormPresenter(view, this);
presenter.Run();
}
}
}
и основная форма:
public partial class ViewMainForm : Form, IViewMainForm
{
private IViewMainFormPresenter _presenter;
public ViewMainForm()
{
InitializeComponent();
}
public IViewMainFormPresenter Presenter
{
get
{
return _presenter;
}
set
{
if (_presenter == null)
{
_presenter = value;
}
}
}
public void Run()
{
ShowDialog();
}
}
и то же самое относится к ViewChild.но я не знаю, как мне установить основную форму как mpiparent дочернего представления