Erp 如何删除Acumatica中的事件处理程序

Erp 如何删除Acumatica中的事件处理程序,erp,acumatica,Erp,Acumatica,我添加了我认为应该删除acumatica基类的事件处理程序的代码 public override void Initialize() { // Remove the event handler on the APTran object for APTran_SubID_FieldDefaulting so we can override it in this module Base.FieldDefaulting.RemoveHandler<APTran.subID>(A P

我添加了我认为应该删除acumatica基类的事件处理程序的代码

 public override void Initialize()
 {
 // Remove the event handler on the APTran object for APTran_SubID_FieldDefaulting so we can override it in this module
 Base.FieldDefaulting.RemoveHandler<APTran.subID>(A PTran_SubID_FieldDefaulting);

 }
public override void Initialize()
{
//删除APTran_SubID_FieldDefaulting的APTran对象上的事件处理程序,以便我们可以在此模块中覆盖它
Base.FieldDefaulting.RemoveHandler(一个PTran\u SubID\u FieldDefaulting);
}
然而,它仍然贯穿基本代码。如果我删除此代码并保留新的事件处理程序,它将通过我拥有的事件处理程序运行,然后还将通过基本事件处理程序运行

关于如何删除基本事件处理程序以便只使用新的事件处理程序,有什么建议吗?

解决方案

结果是(感谢伊万)

我不需要删除事件处理程序,我只需要在扩展中声明事件处理程序,并使用指向原始事件处理程序的第三个参数,然后我可以选择不调用该委托,如果这是我在项目中需要的

例如:

protected void APTran_SubID_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e, PXFieldDefaulting del)
 {
 APTran row = (APTran)e.Row;
 if (row == null) { return; }
 // do my code here
 // skip calling the original event
 //del.Invoke(sender, e); -- invokes the Base FieldDefaulting event handler

 } 
解决方案

结果是(感谢伊万)

我不需要删除事件处理程序,我只需要在扩展中声明事件处理程序,并使用指向原始事件处理程序的第三个参数,然后我可以选择不调用该委托,如果这是我在项目中需要的

例如:

protected void APTran_SubID_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e, PXFieldDefaulting del)
 {
 APTran row = (APTran)e.Row;
 if (row == null) { return; }
 // do my code here
 // skip calling the original event
 //del.Invoke(sender, e); -- invokes the Base FieldDefaulting event handler

 } 

在代码之前运行基本逻辑可能不是一个坏主意,如果将来发生任何变化,逻辑仍将运行,但代码将覆盖该值。在代码之前运行基本逻辑可能不是一个坏主意。如果将来发生任何变化,逻辑仍将运行,但代码将覆盖该值。