首先,你需要为三个DataGridView表单中的每一个创建一个UserControl。由于您正在使用MVP,因此每个控件都应该继承一个接口。例如:
public interface IDataGridView1
{
}
public interface IDataGridView2
{
}
public interface IDataGridView3
{
}
以下是一个DataGridView1 UserControl的示例,它继承了其接口和Control:
public class DataGridView1 : Control, IDataGridView1
{
TableLayoutPanel layoutPanel;
public DataGridView1()
{
layoutPanel = new TableLayoutPanel();
Controls.Add(layoutPanel);
}
}
另外两个DataGridView将类似,但具有自己的功能。
然后,您可以为MainView创建一个接口,其中包括三个应包含的DataGridView的属性,以及显示一个DataGridView并隐藏其余部分的方法:
public interface IMainView
{
IDataGridView1 DataView1 { get; set; }
IDataGridView2 DataView2 { get; set; }
IDataGridView3 DataView3 { get; set; }
void ShowOnlyDataView1();
void ShowOnlyDataView2();
void ShowOnlyDataView3();
}
主视图类将从 Form
和其自身的接口继承。这里我展示了通过表单构造函数传入的实例化的 DataGridViews:
public class MainView : Form, IMainView
{
public IDataGridView1 DataView1 { get; set; }
public IDataGridView2 DataView2 { get; set; }
public IDataGridView3 DataView3 { get; set; }
TableLayoutPanel layoutPanel;
public MainView(IDataGridView1 dataView1, IDataGridView2 dataView2,
IDataGridView3 dataView3)
{
this.DataView1 = dataView1;
this.DataView2 = dataView2;
this.DataView3 = dataView3;
layoutPanel = new TableLayoutPanel();
Controls.Add(layoutPanel);
}
public void ShowOnlyDataView1()
{
DataView2.Hide();
DataView3.Hide();
DataView1.Show();
}
public void ShowOnlyDataView2()
{
}
public void ShowOnlyDataView3()
{
}
}
这里是一个您的主方法的示例。您需要实例化每个DataGridView并将其传递到MainView:
public static void Main(string[] args)
{
IDataModel dataModel = new DataModel();
IDataGridView1 dataView1 = new DataGridView1();
IDataGridView2 dataView2 = new DataGridView2();
IDataGridView3 dataView3 = new DataGridView3();
IMainView mainView = new MainView(dataView1, dataView2, dataView3);
DataGridPresenter1 dataPresenter1 = new DataGridPresenter1(dataView1, dataModel);
DataGridPresenter2 dataPresenter2 = new DataGridPresenter2(dataView2, dataModel);
DataGridPresenter3 dataPresenter3 = new DataGridPresenter3(dataView3, dataModel);
MainPresenter mainPresenter = new MainPresenter(mainView, dataModel);
}
大致意思是这样的。
你的三个DataGridView显示在MainView中,并且所有四个视图都通过自己的Presenter访问。
IWizardView
。然后使用一些代码来选择适当的视图,也许使用一个有状态的WizardViewFactory
带有Next()
和Prev()
方法。这只是一种选择。 - Sam Axe