powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / TextBox -> Событие Change -> Пропуск событий
1 сообщений из 1, страница 1 из 1
TextBox -> Событие Change -> Пропуск событий
    #35132244
Реализован алгоритм "быстрого поиска", т.е. в контрол ListView вставляются значения из общего массива значений, текст в которых содержит введённый в TextBox фрагмент. Алгоритм в виду большого объёма данных выполняется достаточно долго. Проблема заключается в том, что при достаточно бойком вводе фрагмента в TextBox, например, состоящем из трёх букв, реально отрабатывается одно событие TextBox_Change. Поясню примером:

Есть следующая функция обработки события TextBox_Change:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Sub TextBox_Change()

  Debug.Print (TextBoxEntryCount & ": """ & TextBox.Text & """")
  ' Контроль повторного вызова функции до окончания
  '  её выполнения из предыдущего запуска
  TextBoxEntryCount = TextBoxEntryCount +  1 
  If TextBoxEntryCount  >  2  Then
    TextBoxEntryCount =  2 
    Exit Sub
  End If
  While TextBoxEntryCount >  1 
    DoEvents
  Wend

  ' "Быстрый поиск"
..........
..........
..........

  TextBoxEntryCount = TextBoxEntryCount -  1 
End Sub

Код "....." и есть алгоритм "быстрого поиска". на переменной TextBoxEntryCount планировалось построить механизм отложенного выполнения очереди событий Change, но оно не работает. И вот что показали исследования:
Набираю в TextBox букву "э", в окне Immediate вижу:
0: "э"
далее быстро набираю две буквы подряд "р" и "а" (именно набираю, а не вставляю из клипборда), в окне Immediate вижу:
0: "эр"

И больше ничего.
Общий вывод: Такое впечатление, что событие Change блокируется на весь период его выполнения. Как предотвратить его блокировку?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / TextBox -> Событие Change -> Пропуск событий
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]