На форме есть ListBox, заполняется строками. Стиль обычный, не чекбоксы (Style=0), мультиселект включен (MultiSelect=2). На форме есть также три кнопки, "Выделить все", "Снять выделение" и "Инвертировать выделение", в которых в цикле пробегаются записи и делается .Selected(I)=True, .Selected(I)=False, .Selected(I)=Not .Selected(I).
Для того, чтобы это не тормозило, листбокс на время делается невидимым. Примерно так:
- Код: Выделить всё
List1.Visible = False
P = List1.ListIndex
For I = 0 To List1.ListCount - 1
List1.Selected(I) = Not List1.Selected(I)
Next I
List1.ListIndex = P
List1.Visible = True
Что получается?
Запускаю форму, нажимаю кнопку "Инвертировать выделение", кликаю на любой строке листбокса, VB падает. Падает в 4 случаях из 5, в одном случае начинаются неожиданные глюки в самых неожиданных местах -- остановка по Stack overflow внутри события Validate текстового поля (хотя рекурсии там нигде нет) или где-нибудь еще.
Это дома. На работе повторить не удалось. Но и там, и там студия устанавливалась с одного диска, на обоих компьютерах установлен SP6 для студии, на обоих компьютерах одна и та же ОС (W2k) с примерно одними и теми же патчами и обновлениями.