Form.Dirty 事件 (Access)

Dirty事件发生时指定控件的内容发生更改。

语法

表达式 (取消)

expression:表示 Form 对象的变量。

参数

名称 必需/可选 数据类型 说明
Cancel 必需 Integer 该设置确定是否发生 Dirty 事件。 将 Cancel 参数设置为 True (1) 将取消 Dirty 事件。

备注

此事件的示例包括在文本框或组合框中直接输入一个字符或更改使用宏或 Visual Basic 设置该控件的 Text 属性。

通过使用宏或 Visual Basic 来修改窗体中的记录不会触发此事件。 必须直接在记录中键入数据,或者设置控件的 Text 属性。

此事件仅适用于绑定窗体,而不适用于未绑定窗体或报表。

若要在该事件发生时运行宏或事件过程,请将 OnDirty 属性设置为宏的名称或 [事件过程]。

通过在发生 Dirty 事件时运行宏或事件过程,可以确定是否可以更改记录。 也可以显示一条消息请求获得编辑权限。

通过使用键盘更改记录中的数据,除了控制事件(如 Dirty 事件)外,还会导致键盘事件发生。 例如,如果移到一条新记录并在该记录的文本框中键入一个 ANSI 字符,则下列事件将按如下顺序发生:

KeyDownKeyPressBeforeInsertdirtyKeyUp

记录的 BeforeUpdateAfterUpdate 事件在记录中输入新的或更改的数据并移动到另一个记录 (或选择“记录”菜单上) 的“保存记录”,因此在记录的“脏”事件之后发生。

取消 Dirty 事件将导致对当前记录的更改回滚。 它等效于按 Esc 键。

示例

下面的示例在数据更改时启用 btnUndo 按钮。 UndoEdits ( ) 子例程是从文本框控件的 Dirty 事件调用的。 单击启用的 btnUndo 按钮会使用 OldValue 属性还原控件的原始值。

Private Sub Form_Dirty() 
 If Me.Dirty Then 
 Me!btnUndo.Enabled = True ' Enable button. 
 Else 
 Me!btnUndo.Enabled = False ' Disable button. 
 End If 
End Sub 
 
Sub btnUndo_Click() 
 Dim ctlC As Control 
 ' For each control. 
 For Each ctlC in Me.Controls 
 If ctlC.ControlType = acTextBox Then 
 ' Restore Old Value. 
 ctlC.Value = ctlC.OldValue 
 End If 
 Next ctlC 
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。