如何编辑正在编辑的MS Access Form的textBox控件中键入的值?我想显示一个搜索结果(在列表框中),该搜索结果随着添加到用于搜索的文本框中的每个新字符而更新?查询到位,事件到位,唯一缺少的是类型值存储在哪里,因为在“键入”事件期间它不在控件的.Value属性中。
正如人们所期望的,文本框的'Value'属性不会在更改或键入事件上更新。如果您希望在键入内容时捕获键入到textBox中的内容,则需要查找'Text'属性,如下所示:
Me.txtSearchBox.Text
[不幸的是,除非textBox处于活动状态,否则无法访问此属性,因此,如果您在与其他控件交互时阅读.Text,则需要测试textBox是否处于活动状态,并且故障转移到检查“值”,如:
' assuming you've already dim'd the strSearchBox as String here...
If Screen.ActiveControl.Name = txtSearchBox.Name Then
' the control is active, so for the moment, Text is accessible
strSearchBox = Trim(txtSearchBox.Text)
Else
' textBox failover:
' Value is always accessible
strSearchBox = Trim(txtSearchBox.Value)
End If
' strSearchBox now has the contents of txtSearchBox, one way or the other
是,我是一个强制性的Trim()er。
[不幸的是,如果要在进出调试或加载Screen.ActiveControl.Name的形式时运行此代码,则将无法调用该代码。您可以通过测试所涉及的表单是否处于活动状态来解决此问题,如下所示:
' no reason not to test for the specific form as opposed to any form, IMO
If Screen.ActiveForm.Name <> Me.Name Then
' activeform failover:
' Value is always accessible
strSearchBox = Trim(txtSearchBox.Value)
Else
' there's an ActiveForm loaded, so there is an ActiveControl Name to test
If Screen.ActiveControl.Name = txtSearchBox.Name Then
' the control is active, so for the moment, Text is accessible
strSearchBox = Trim(txtSearchBox.Text)
Else
' textBox failover:
' Value is always accessible
strSearchBox = Trim(txtSearchBox.Value)
End If
End If
我希望这可以节省一些时间。