Forms 何谓';按键预览';MS Access中窗体的属性?

Forms 何谓';按键预览';MS Access中窗体的属性?,forms,ms-access,ms-access-2010,keypreview,Forms,Ms Access,Ms Access 2010,Keypreview,我现在正在MS Access中编程,在浏览表单的属性时,我遇到了一个名为“key preview”的属性。MS Access文档说明它用于在控件的键盘事件之前调用窗体的键盘事件 我不确定这意味着什么,以及该属性的可能用途是什么???如果KeyPreview属性设置为true,则窗体将在控件之前接收键盘事件,从而使您有机会在窗体级别对其进行处理 现在,假设您有一个表单上有许多控件。 假设您希望允许用户按键盘上的F2键执行某些操作,例如打开另一个窗体、播放一些音乐或其他任何操作 在Access中,与

我现在正在MS Access中编程,在浏览表单的属性时,我遇到了一个名为“key preview”的属性。MS Access文档说明它用于在控件的键盘事件之前调用窗体的键盘事件


我不确定这意味着什么,以及该属性的可能用途是什么???

如果KeyPreview属性设置为true,则窗体将在控件之前接收键盘事件,从而使您有机会在窗体级别对其进行处理

现在,假设您有一个表单上有许多控件。
假设您希望允许用户按键盘上的F2键执行某些操作,例如打开另一个窗体、播放一些音乐或其他任何操作

在Access中,与大多数UI编程一样,一次只能有一个控件接收焦点。 因此,如果焦点在文本框上,当您点击F2时,该文本框键盘事件将触发。
您可以从文本框事件捕获该按键,但如果用户从另一个控件点击F2,则不会检测到该按键,除非您还检测到F2是从该控件本身点击的

因此,为了简化操作,您可以将表单设置为首先接收键盘事件,然后再将其传递给具有焦点的控件,这样您就有机会检测到用户在单个位置按下了F2,而不必连接每个控件来检测该按键

例子 将单个文本框
mytextbox
添加到新表单。 在表单的代码隐藏中,添加以下事件以捕获表单和文本框的键盘事件:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Debug.Print "Form_KeyDown(keycode:" & KeyCode & ", Shift:" & Shift & ")"
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
    Debug.Print "Form_KeyPress(KeyAscii:" & KeyAscii & ")"
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    Debug.Print "Form_KeyUp(keycode:" & KeyCode & ", Shift:" & Shift & ")"
End Sub

Private Sub mytextbox_KeyDown(KeyCode As Integer, Shift As Integer)
    Debug.Print "mytextbox_KeyDown(keycode:" & KeyCode & ", Shift:" & Shift & ")"
End Sub

Private Sub mytextbox_KeyPress(KeyAscii As Integer)
    Debug.Print "mytextbox_KeyPress(KeyAscii:" & KeyAscii & ")"
End Sub

Private Sub mytextbox_KeyUp(KeyCode As Integer, Shift As Integer)
    Debug.Print "mytextbox_KeyUp(keycode:" & KeyCode & ", Shift:" & Shift & ")"
End Sub
现在,打开表单并键入一个键。
如果按
Q
键,您应该会在即时窗口中看到如下内容:

只有文本框接收到事件

现在,将KeyPreview属性设置为true(Yes),当您打开表单并点击
Q
,您应该会看到表单首先收到键盘事件