我正在创建一个新的winforms应用程序,它将具有将加载矩阵数据的datagridviews,我希望用户能够对数据执行大量操作,例如显示/隐藏列,编辑单元格值和过滤太。
我想过使用MVP模式(Model,View,Presenter)。
我想创建一个presenter类,它将处理所有逻辑(意味着用户触发的任何事件),最终会在演示者中处理原始数据(矩阵)。这似乎是合乎逻辑的,但我的问题是如果我想传递控件本身(如datagridviews)我该怎么办?这些控件是应该发送给演示者类还是那个糟糕的设计?
或许最好找到仅修改原始数据然后更新我的datagridviews的方法吗?
答案 0 :(得分:3)
不传递控件是一个好主意。如果您要使用诸如“MVP”之类的模式,那么您应该让“模型”包含“视图”的表示。在这种情况下,如果存在与属于模型的一组数据有关的各种细节。然后你传递模型。
也许最好找到仅修改原始数据然后更新我的datagridviews的方法?
所以,回答这个问题,“是的”。使用模型包装数据并传递它。
<强>更新强>
具体来说,http://test:8080/
控件属于容器,因为它们是引用类型并且有大量公开的WinForms
,您会冒很大的风险将引用从一个events
传递到另一个Form
Form
。现在,假设第一个Form
已完成使用并关闭和处理,它会杀死对控件的引用并尝试取消events
。你知道我要去哪儿吗?它很快成为一个噩梦,试图正确地清理引用,并且un wire事件处理程序,并且由于控件属于一个容器的设计,它打破了这个范例。
最好分开关注点。如果您需要一个视图来获取某些数据,那么最好自己传递数据......