我使用MVP设计patern和i MainForm(MDI)
我想在父mdi容器中显示子窗体。
我的问题是:
在view
或presenter
中放置初始化子表单的代码是不错的做法?
来自视图的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();
}
答案 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.
}