传递控制的正确方法是什么?

时间:2016-03-21 11:01:45

标签: c# .net winforms datagridview user-controls

我正在创建一个新的winforms应用程序,它将具有将加载矩阵数据的datagridviews,我希望用户能够对数据执行大量操作,例如显示/隐藏列,编辑单元格值和过滤太。

我想过使用MVP模式(Model,View,Presenter)。

我想创建一个presenter类,它将处理所有逻辑(意味着用户触发的任何事件),最终会在演示者中处理原始数据(矩阵)。这似乎是合乎逻辑的,但我的问题是如果我想传递控件本身(如datagridviews)我该怎么办?这些控件是应该发送给演示者类还是那个糟糕的设计?

或许最好找到仅修改原始数据然后更新我的datagridviews的方法吗?

1 个答案:

答案 0 :(得分:3)

传递控件是一个好主意。如果您要使用诸如“MVP”之类的模式,那么您应该让“模型”包含“视图”的表示。在这种情况下,如果存在与属于模型的一组数据有关的各种细节。然后你传递模型。

  

也许最好找到仅修改原始数据然后更新我的datagridviews的方法?

所以,回答这个问题,“是的”。使用模型包装数据并传递它。

<强>更新

具体来说,http://test:8080/控件属于容器,因为它们是引用类型并且有大量公开的WinForms,您会冒很大的风险将引用从一个events传递到另一个Form Form。现在,假设第一个Form已完成使用并关闭和处理,它会杀死对控件的引用并尝试取消events。你知道我要去哪儿吗?它很快成为一个噩梦,试图正确地清理引用,并且un wire事件处理程序,并且由于控件属于一个容器的设计,它打破了这个范例。

最好分开关注点。如果您需要一个视图来获取某些数据,那么最好自己传递数据......