如何通过设置文本属性来强制匹配Combobox RowSource行?

时间:2019-06-19 10:00:13

标签: combobox autocomplete access-vba ms-access-2013

在车间,具有较大按钮的虚拟(触摸)键盘窗体用于在TextBoxes和ComboBoxes中输入文本。

这可以正常工作,并且组合框文本设置正确,但是与使用物理键盘直接在ComboBox中键入内容时,RowSource不匹配。显示整个列表,就好像您只是在不键入字符的情况下按下下拉按钮一样。

在下面的示例中,列表中有一个Stefan,但没有查找该行。

我尝试了SetFocusRequeryRefreshDirty,并与_AfterUpdate组合使用并调用DoEvents无济于事。

我什至尝试选择CutPaste文本(但即使设置SelStartSelLength来更正值也不是选择它,所以我假设它剪切并粘贴了一个零字符范围)。如果我可以进行文本选择,那么我可能可以使它起作用。

Dim ctrlPrevious As Control
Set ctrlPrevious = Screen.PreviousControl
ctrlPrevious.SetFocus
ctrlPrevious.text = sTemp
ctrlPrevious.SelStart = 0
ctrlPrevious.SelLength = Len(sTemp)
ctrlPrevious.Cut
ctrlPrevious.Paste

是否可以强制执行“自动完成”行为?

1 个答案:

答案 0 :(得分:1)

使用SendKeys来模仿普通的键盘行为,而不是上面的所有代码。
因此,在您的btnPressed_Clicked事件中

Dim ctrlPrevious As Control
Set ctrlPrevious = Screen.PreviousControl
ctrlPrevious.SetFocus   
SendKeys btnPressed.caption