I've always thought that to be an inefficiency in the event system, but there isn't any getting around it. Clearing the items in the listbox by any means will usually trigger a SelectedIndexChanged event back to -1. I'm not sure whether it would do that if the index already was -1 (I would think that it should not, but I'm not sure).