Здравствуйте, Baiker, Вы писали:
B>В том и прикол, что никакого массива нет. Есть контрол. Мы ему дали некий список из 10 элементов. И вот где-то в середине работы я получаю число для выделения элемента: либо -5, либо 0...9. Почему ListBox.SelectedIndex не может проглотить -5??? Очевидно же, что юзерские данные валидируются контролом нещадно, поэтому либо выделяем один элемент по валидному индексу, либо... снимаем всё выделение! Логика проще пареной репы. Но не у макрософака.
Хоть и поздно, но отвечу.
Для совместимости с winforms, которая в свою очередь базируется на Win API. А там сказано
Указывает отсчитываемый от нуля индекс выбранной строки. Если этот параметр имеет значение -1, в списке не будет выбора.
....
При возникновении ошибки возвращаемое значение будет LB_ERR.
которое и портируется в .NET как ArgumentException
https://learn.microsoft.com/ru-ru/windows/win32/controls/lb-setcursel
Почему сделали совместимо — думаю. понятно. Никому не хочется переделывать программу при переходе с Winforms на WPF