【发布时间】:2019-03-01 08:11:01
【问题描述】:
我的主要目标是在使用旧的 WinForms 项目期间最大限度地减少工作时间成本。我已经做了一个实现 MCV + WinForms 的例子。有效。我有清晰的模型,但我在 Controller.cs 中有两种方法(OnSuper() 和 WorkMethod())——我不喜欢它们。它们不具备功能性,但是当有人在没有面包的情况下将黄油涂在黄油上时,它们看起来很有趣。如何在没有 MPV 和没有 WPF 的接口的情况下升级这个想法?或者这不是一个好方法,我必须创建一个新的 WPF 项目?
类模型.cs
class Model
{
public int X { get; set; }
public int Y { get; set; }
public int R { get; set; }
public Model() { }
public Model(int x, int y)
{
X = x;
Y = y;
}
public int GetRes()
{
return X + Y;
}
}
类 Form1.cs
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += delegate
{
Controller controller = new Controller
(
this,
Int32.Parse(this.textBox1.Text),
Int32.Parse(this.textBox2.Text)
);
controller.SuperEvent += Controller_SuperEvent;
controller.OnSuper();
};
}
private void Controller_SuperEvent(object sender, EventArgs e)
{
Controller controller = sender as Controller;
textBox3.Text = controller.WorkMethod();
controller.WorkMethod();
}
}
和类 Controller.cs
class Controller
{
public event EventHandler SuperEvent;
Model model;
Form1 form1;
public int Result { get; set; }
public int CX { get; set; }
public int CY { get; set; }
public Controller(Form1 form1, int cX, int cY)
{
this.form1 = form1;
this.model = new Model();
CX = cX;
CY = cY;
}
public void OnSuper()
{
SuperEvent?.Invoke(this, EventArgs.Empty);
}
public string WorkMethod()
{
model.X = CX;
model.Y = CY;
return model.GetRes().ToString();
}
}
【问题讨论】:
-
如果代码看起来毫无意义,那么您做对了。 MVC 模式的重点是编写易于维护的代码。期望是十年后它不再看起来毫无意义,但你无法预测未来。顺便说一句,有很多用于 Winforms 的 MVC 框架,在自己动手之前一定要看看它们。
标签: c# winforms model-view-controller