0

我创建了我自己的继承自 DataGridView 的类 c_DataGridView。现在在这个类中,我已经实现了事件CellEndEdit

现在,我在名为myGrid1的表单上创建了此类/控件的实例,然后我还在表单上实现了相同的网格事件。

现在,当我运行表单并编辑 Grid 上的单元格时,事件触发顺序是:首先触发我的类 c_DataGridView 的CellEndEdit事件,然后触发在表单上实现的对象事件。

有没有可能我可以设法先触发 c_DataGridView 对象的事件,然后再触发类的事件本身。

我希望我已经清除了自己。

4

2 回答 2

1

触发事件处理程序的顺序是不可预测的。有一个标准模式来处理这个问题,.NET 类总是有一个与事件同名的受保护方法,前缀为“On”。

因此,在您的派生类中,重写 OnCellEndEdit() 方法而不是订阅事件。您现在可以完全控制事件的处理和触发方式。您可以先调用 base.OnCellEndEdit(),然后编写您的自定义代码。或者您可以最后调用它,首先编写您的自定义代码。或者你不能调用它,从而阻止 CellEndEdit 事件被触发。显然,您现在可以完全控制订单,正确的方式取决于您想要完成的任务。

于 2012-07-29T16:39:12.023 回答
0

根据您的评论,我会采取不同的方式。

匹配一行的类。与行列表匹配的类,具有 BindingList 属性。然后我会把它绑定到网格上。然后在行类中更改百分比时,更新 Amount 属性。这将触发属性更改事件,这将导致网格更新。

因此,基本上尝试在几个类中获取所有数据逻辑,而不是在表示层的内部事件处理程序中。

于 2012-07-29T15:47:57.933 回答