zhidao 发表于 2015-6-15 10:32
个人理解获得焦点后不移开,应该是数据未更新,所以合计没变。
处理窗体中的数据
在窗体中的记录间移动并对数据进行更改时,将发生窗体事件和控件事件。例如,第一次打开一个窗体时,将按照下列顺序发生相应的事件:
Open(打开,窗体) → Load(加载,窗体) → Resize(调整大小,窗体) → Activate(激活,窗体) → Current(成为当前,窗体) → Enter(进入,控件) → GotFocus(获得焦点,控件)
类似地,在关闭窗体时,也将按照下列顺序发生相应的事件:
Exit(退出,控件) → LostFocus(失去焦点,控件) → Unload(卸载,窗体) → Deactivate(停用,窗体) → Close(关闭,窗体)
如果已经对控件中的数据进行更改,控件和窗体的 BeforeUpdate (更新前)事件和 AfterUpdate (更新后)事件都将在 Exit 事件发生之前发生。
使用子窗体
如果打开的窗体中包含有子窗体,则在加载主窗体之前先加载子窗体及其控件。因而,子窗体及其控件的事件(例如,Open 事件、Current 事件、Enter 事件和 GotFocus 事件)将在主窗体的事件发生之前先发生。但子窗体不会发生 Activate 事件,因此在打开主窗体时仅触发主窗体的 Activate 事件。
类似地,当关闭包含子窗体的窗体时,在窗体卸载之后子窗体及其包含的控件也会卸载。子窗体不会发生 Deactivate 事件,因此在关闭主窗体时仅触发主窗体的 Deactivate 事件。对应于控件、窗体和子窗体的事件将按照下列顺序发生。
1. 对应于子窗体控件的事件(例如 Exit 和 LostFocus)
2. 对应于窗体控件的事件(包括子窗体控件)
3. 对应于窗体的事件(例如 Deactivate 和 Close)
4. 对应于子窗体的事件
注释 因为子窗体的事件是在主窗体关闭后发生的,所以某些事件(例如,从子窗体的某个事件中取消主窗体的关闭)将不会发生。您可能需要将这些类型的验证移动到主窗体的事件中。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) | Powered by Discuz! X3.3 |