Я не проверял это в своих приложениях, но если свойство SelectedIndex изменяется, когда LB теряет фокус, вам, вероятно, придется обрабатывать этот случай самостоятельно, кэшируя последний выбранный индекс и сбрасывая его, когда элемент управления восстанавливает фокус. Вы можете сделать это в содержащей форме или в классе, производном от ListBox.
Вы можете даже попытаться установить выбранный индекс, как только увидите, что он становится -1. Не уверен, что произойдет, но мне было бы интересно узнать ...
Редактировать: только что протестировал и, как и другие постеры, я тоже не могу воспроизвести его. Должно быть что-то немного другое в вашем LB