Как заставить соответствие строки Combobox RowSource, установив его свойство Text? - PullRequest
0 голосов
/ 19 июня 2019

В цехе для ввода текста в текстовые и комбинированные списки используется виртуальная (сенсорная) форма клавиатуры с большими кнопками.

Это работает нормально, текст комбинированного списка задан правильно, однако RowSource не совпадает, как это было бы при вводе непосредственно в ComboBox с физической клавиатуры. Весь список отображается так, как будто вы только что нажали кнопку выпадающего меню без ввода символа.

В приведенном ниже примере в списке есть Стефан, но эта строка не найдена.

Я пробовал SetFocus, Requery, Refresh, Dirty и звонил _AfterUpdate, в комбинациях и с DoEvents, но безрезультатно.

Я даже пытался выделить Cut и Paste текст (но даже при настройке SelStart и SelLength на правильные значения не выбирает его, поэтому я при условии, что он обрезает и вставляет диапазон нулевых символов). Если бы я мог заставить работу выделения текста, я мог бы, вероятно, заставить это работать.

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 Ответ

1 голос
/ 19 июня 2019

Используйте SendKeys для имитации обычного поведения клавиатуры вместо всего вышеприведенного кода.
Так в вашем btnPressed_Clicked событии

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