我多年来一直在使用winforms。通常我写一个表单和那个表单,在后面的代码中执行所有操作(验证用户输入,与数据库通信......)。最近一位朋友向我介绍了MVP,我一直在努力学习使用它。我遇到的问题是复制了我曾经能够用表格做的一些东西。例如,在过去,如果我有文本框并且用户在文本框中输入了无效内容,我可以将该文本框设置为红色,将焦点设置在文本框上并提醒用户他们在该测试框中输入了无效内容。现在我的验证是在演示者或模型层中完成的,我可以向用户发送消息,表示某些内容无效,但我如何将焦点设置为控件或更改控件颜色?
答案 0 :(得分:0)
您的演示者无论如何都会拥有对视图的引用,因此您可以直接从演示者处理小部件(文本框等)。或者,可能更好,在视图中有一个方法,如nameIsInvalid()
,您可以在其中编写所需的行为(更改颜色,设置焦点)。当演示者注意到输入验证失败时,将调用此方法。
验证本身应该在模型中完成,因为这与视图无关。
与往常一样,你不需要过于教条。如果有一些简单的验证与小部件直接关联是有意义的,那么将它留在那里。但是,如上所述,应该对整个表格进行最终验证。