MVP - 从视图获取数据到演示者
MVP - Getting Data from the View to the Presenter
我正在尝试在简单的 C# WinForms 应用程序中练习实现 MVP 模式。视图的左侧是一个树视图,其中包含应用程序保存的文件列表;视图右侧是一个 DataGridView,用于显示在树视图中单击的任何文件,或用于键入以另存为新文件。这些文件只是使用 BinaryFormatter 写入磁盘的 Dictionary 对象。
我为视图创建了一个界面:
public interface IMappingsView
{
event EventHandler SaveMapping;
event EventHandler NewMapping;
event EventHandler<DeleteArgs> DeleteMapping;
event EventHandler PasteData;
event EventHandler NodeClicked;
}
视图上的删除按钮具有以下单击事件处理程序:
private void buttonDeleteMapping_Click(object sender, EventArgs e)
{
var node = treeView1.SelectedNode.Text;
var args = new DeleteArgs(Path.Combine(RootDir,node));
if (DeleteMapping != null)
{
DeleteMapping(this, args);
dataGridView1.Rows.Clear();
RefreshTreeView();
}
}
从视图向演示者传递信息的最佳方式是什么?我觉得好像每个场景都需要自定义事件参数是非常错误的。
通过界面提供您想要的数据作为 属性。
假设您有想要公开的 firstName 和 lastName 字段...
public interface IMappingsView
{
event EventHandler SaveMapping;
event EventHandler NewMapping;
event EventHandler<DeleteArgs> DeleteMapping;
event EventHandler PasteData;
event EventHandler NodeClicked;
string FirstName {get;set;}
string LastName {get;set;}
}
然后在实现接口的表单中,
string FirstName {
get {
return textFirstName.Text;
}
set {
textFirstName.Text = value;
}
}
举个例子。
我正在尝试在简单的 C# WinForms 应用程序中练习实现 MVP 模式。视图的左侧是一个树视图,其中包含应用程序保存的文件列表;视图右侧是一个 DataGridView,用于显示在树视图中单击的任何文件,或用于键入以另存为新文件。这些文件只是使用 BinaryFormatter 写入磁盘的 Dictionary 对象。
我为视图创建了一个界面:
public interface IMappingsView
{
event EventHandler SaveMapping;
event EventHandler NewMapping;
event EventHandler<DeleteArgs> DeleteMapping;
event EventHandler PasteData;
event EventHandler NodeClicked;
}
视图上的删除按钮具有以下单击事件处理程序:
private void buttonDeleteMapping_Click(object sender, EventArgs e)
{
var node = treeView1.SelectedNode.Text;
var args = new DeleteArgs(Path.Combine(RootDir,node));
if (DeleteMapping != null)
{
DeleteMapping(this, args);
dataGridView1.Rows.Clear();
RefreshTreeView();
}
}
从视图向演示者传递信息的最佳方式是什么?我觉得好像每个场景都需要自定义事件参数是非常错误的。
通过界面提供您想要的数据作为 属性。
假设您有想要公开的 firstName 和 lastName 字段...
public interface IMappingsView
{
event EventHandler SaveMapping;
event EventHandler NewMapping;
event EventHandler<DeleteArgs> DeleteMapping;
event EventHandler PasteData;
event EventHandler NodeClicked;
string FirstName {get;set;}
string LastName {get;set;}
}
然后在实现接口的表单中,
string FirstName {
get {
return textFirstName.Text;
}
set {
textFirstName.Text = value;
}
}
举个例子。