点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我正在尝试验证用户在网格单元格中输入的值。 如果我通过Grid0.Columns.Item(" ColId")。ValidateBefore + = ValidationHandler添加eventHandler,则一切正常。 但是由于某种原因,尽管该事件处理程序仍处于活动状态,但随着时间的流逝,它会丢失。 因此,我尝试将EventHandler添加到SBO_Application.ItemEvent,并在关闭窗体时将其删除。 但是现在BubbleEvent = false对网格行为没有影响(输入了无效值,但用户仍然可以更改单元格焦点)。
先谢谢您!
私有void SBO_Application_ItemEvent(字符串FormUID,ref SAPbouiCOM.ItemEvent pVal,布尔泡泡事件) { BubbleEvent = true; 如果 ( pVal.BeforeAction && pVal.ItemUID == Grid0.Item.UniqueID && pVal.FormUID == UIAPIRawForm.UniqueID && pVal.Row> = 0 && pVal.ColUID == COLID_VALUE && pVal.EventType == SAPbouiCOM.BoEventTypes.et_VALIDATE && pVal.ItemChanged ) { SetParameter(pVal.Row,out BubbleEvent); }
你好
只要Grid(0).Columns.Item(" ColId")保留在内存中,此方法就起作用。
一旦GC收集了该对象,对处理程序的引用将无效。
另外请注意,这可能会导致内存泄漏情况。
要正确处理此事件,您可以选择以下几种方法:
1。 将处理程序添加到Grid0而不是特定的列。
2。 如果要处理特定的列,请将该列声明为变量,然后将处理程序添加到该变量。
请注意,您还需要确保Grid0或Column变量在窗体的整个生命周期中都有效,以便GC不会收集它。
请注意
Edy
谢谢,Edy! 听起来合理。
一周热门 更多>