gpt4 book ai didi

winforms - 将 Form.ShowDialog() 代码重构为 MVP

转载 作者:行者123 更新时间:2023-12-02 19:21:19 25 4
gpt4 key购买 nike

我有一个 WinForm 和在其上设置的一些属性。
例如:表格上接受姓名、地址。
(实际示例中还有更多属性)

当前的实现有点类似于

frmName frmView = new  frmName (); //frmName  is WINFORM 
frmView.Name= "ABC"; //any valid string or read this from file
frmView.Address="SomeAddress"; //any valid address or read this from file

if (frmView.ShowDialog() == DialogResult.OK)
{
//OK CLICK PROCESS and
// get new values edited by user
string name = frmView .Name;
string address = frmView.Address;
doProcessing(name,address);
}
else{
//Ignore cancel click..
}

我如何将其转换为 MVP基于Winform的应用程序。
还需要将 ShowDialog() 上完成的处理重构为 Presenter/Model
(不知 Prop 体在哪里做)?
还需要避免在表单本身上编写代码。(被动 View )

谢谢大家。

最佳答案

我自己仍在尝试不同的 MVP 方法,但我目前的做法是这样的:

frmName frmView = new frmName();

if (frmView.ShowDialog() == DialogResult.OK) {
presenter.RequestProcessing(frmView.Name, frmView.Address);
} else {
//Ignore cancel click..
}

您说您想避免在表单本身上编写任何代码,但这对我来说没有意义。在 Passive View ,您将所有特定于应用程序的请求传递给 Controller ​​或演示者。

在此示例中, View 处理与 View 相关的逻辑。打开对话框不是一个需要通知其他任何内容(例如演示者)的用户操作。就像打开上下文菜单一样,对话框是该特定 View 选择如何向用户提供这些特定于应用程序的请求的一部分。在用户实际完成并提交请求之前,演示者不需要了解任何信息。

在某些情况下,我需要能够处理对话框本身内的错误,我已将 IPresenter 对象传递到对话框的构造函数中。例如,当单击“确定”按钮时,它可以自行发出适当的演示者请求,并且可以在出现错误时显示消息框而不是关闭。

MVP 有很多变化,但我希望这会有所帮助。祝您设置顺利。

关于winforms - 将 Form.ShowDialog() 代码重构为 MVP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com