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

Posted

技术标签:

【中文标题】如何通过设置 Text 属性来强制匹配 Combobox RowSource 行?【英文标题】:How to force match Combobox RowSource row by setting its Text property? 【发布时间】:2019-06-19 10:00:13 【问题描述】:

在车间,使用带有较大按钮的虚拟(触摸)键盘表单将文本输入到 TextBox 和 ComboBox。

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

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

我尝试了SetFocusRequeryRefreshDirty,以及调用_AfterUpdate,结合使用DoEvents,但无济于事。

我什至尝试选择 CutPaste 文本(但即使将 SelStartSelLength 设置为正确的值没有选择它,所以我' m 假设它剪切并粘贴了一系列零字符)。如果我能让文本选择工作,我可能会让它工作。

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】:

使用SendKeys 来模拟正常的键盘行为,而不是上面的所有代码。 所以在你的btnPressed_Clicked 事件中

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

【讨论】:

漂亮!很简单。我应该想到的。但我对控件的方法视而不见。 社交媒体力量 :)

以上是关于如何通过设置 Text 属性来强制匹配 Combobox RowSource 行?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过移动 xpath 与 Appium 匹配 @text 属性和正则表达式(正则表达式)来查找元素?

VB中怎么使用combox选择数值(如8,9,10等)来改变Text中字号的大小?

MFC 下拉框Combo Box

VB中,在COMBOX中选择一个值如何在TEXT中自动显示相关值

combo口的电口接线不亮 combo模式协商问题,可以强制电口

mfc如何给combo box关联byte型变量