我已经创建了自己的继承自DataGridView的类c_DataGridView。现在,在本课程中,我实现了事件 CellEndEdit 。
现在我在名为 myGrid1 的表单上创建了这个类/控件的实例,然后我还在表单上实现了相同的网格事件。
现在当我运行表单并在Grid上编辑一个单元格时,事件触发顺序是:首先我的类c_DataGridView的 CellEndEdit 事件触发,然后在表单上实现对象的事件触发。
我是否有可能设法先触发c_DataGridView对象的事件,然后再触发类的事件本身。
我希望我已经清除了自己。
答案 0 :(得分:1)
触发事件处理程序的顺序是不可预测的。有一个标准模式来处理这个问题,.NET类总是有一个与事件同名的受保护方法,前缀为“On”。
因此,在派生类中,重写OnCellEndEdit()方法而不是订阅事件。您现在可以完全控制事件处理和触发的方式。您可以先调用base.OnCellEndEdit(),然后编写自定义代码。或者您可以最后调用它,首先编写自定义代码。或者你不能调用它,防止CellEndEdit事件被触发。显然,您现在可以完全控制订单,正确的方式取决于您想要完成的任务。
答案 1 :(得分:0)
根据你的评论我会采用不同的方式。
匹配行的类。 一个匹配行列表的类,具有BindingList属性。 然后我就把它绑在了网格上。 然后,当在行类中更改百分比时,更新Amount属性。这将触发属性更改事件,这将导致网格更新。
因此,请尝试将所有数据逻辑放在几个类中,而不是在表示层中的内部事件处理程序中。