C#winforms mvp在演示者中显示子表单

时间:2016-07-16 17:50:40

标签: c# winforms mvp

我使用MVP设计patern和i MainForm(MDI)我想在父mdi容器中显示子窗体。

我的问题是:

viewpresenter中放置初始化子表单的代码是不错的做法?

来自视图的Mehtod调用presenter方法ShowMusicLibrary

查看

public void ShowLibraryButton_Click(object sender, EventArgs e)
{
    this.Presenter.ShowMusicLibrary();

    // put here or in presenter
}

主讲人:

    public void ShowMusicLibrary()
    {
        this._model.ShowAll();
    }

初始化子表单的代码在此处:

 foreach (Form topList in Application.OpenForms)
 {
     if (topList.GetType() == typeof(MusicLibrary))
     {
          form.Activate();
          return;
     }

     _ms = new MusicLibrary();
     _ms.MdiParent = this;
     _ms.Show(); 
   }

1 个答案:

答案 0 :(得分:0)

如果您使用的是MVP模式,则在Presenter中显示子表单。 这是最好的解决方案。 不要直接打电话给主持人

  this.Presenter.ShowMusicLibrary();

创建将在演示者上实现的事件的界面,并在yotu在点击视图上的按钮后显示子视图时调用。 有些想法:

intercafe IShowMusicLibrary
{
event action show();
}

//view


public void ShowLibraryButton_Click(object sender, EventArgs e)
{
   if(show!=null)
show();


}

//presenter
private IShowMusicLibrary _musicLibrary;

// in constructor
_musicLibrary.show += YourEvent;


public YourEvent()
{
//here show a child control.
}