合适的地方举办活动?
时间:2020-03-06 14:49:40 来源:igfitidea点击:
我有一个刚刚开始的Windows Form项目。在表单上,我有一个要与"产品"一起加载的列表框。当某人双击某个产品时,我希望它引发一个ProductChanged事件。当产品更改时,我项目中的其他内容将订阅此事件并更新诸如GUI其他部分之类的内容。
我的问题是,该事件应该在哪里,谁应该提出?该事件应该在表单上,并由列表框的双击处理程序引发吗?还是应在事件在我的Products类中的位置处进行设置,并且列表框在该类上调用一个方法以告知其产品已更改。然后,Product类会引发该事件吗?还是应该采用其他方式?
解决方案
更改的产品是一个UI事件,如果将其在表单上引发,并且其他UI元素支持该事件,则将是有意义的。
列表框应该引发事件,因为那是其产品已更改的事件。
取决于事件表示什么。如果目的是通知订阅者该Product对象已被修改,则它属于Product类,并且应由该类中的代码触发。如果目的是通知已选择另一个Product对象,则该对象属于管理"产品"列表(列表框/窗体)的视图。
名称ProductChanged表示在更改产品时将触发该事件。我将在产品类中引发该事件,因为在这种情况下,每次更改都会触发该事件。如果我们在GUI中触发它,然后又添加(例如)导入功能,则很可能我们忘记在更改后触发该事件。