Это тревожный кусок кода:Почему моя функция внезапно останавливается?
private void CodesListSelectedIndexChanged(object sender, EventArgs e)
{
if (_doNothing) return;
_drawMarker = false;
_doNothing = true;
_entitiesList.SelectedItems[0].Selected = false;
_doNothing = false;
Game.CurrentItem = Item.GetItemByCodeId(_codesList.SelectedIndices[0]);
}
private bool _doNothing;
private void EntitiesListSelectedIndexChanged(object sender, EventArgs e)
{
if (_doNothing) return;
_drawMarker = false;
_doNothing = true;
_codesList.SelectedItems[0].Selected = false;
_doNothing = false;
Game.CurrentItem = Item.GetItemByEntityId(_entitiesList.SelectedIndices[0]);
}
В принципе у меня есть два ListViews, _codesList и _entitiesList, оба имеют один элемент. Я хочу, чтобы они сделали это, когда один выбран, другой должен отменить выбор. Чтобы предотвратить случай срабатывания при изменении выбранного индекса из соответствующего другого списка на false, у меня есть переменная _doNothing, которая в начале установлена в false.
Теперь, когда я выбираю первый элемент (скажем, в _entitiesList), это доходит до _codesList.SelectedItems [0] .Selected = false; то он внезапно выпадает из функции, даже не запуская событие для другого и не делает совершенно другого несвязанного материала и никогда не возвращается к завершению этой функции. Я прошел через него с отладкой раз и раз снова, и это всегда одно и то же. Это означает, что _doNothing никогда больше не устанавливается на false, поэтому все последующие вызовы событий немедленно выходят из-под причины ...
Wtf происходит?
Отладка + Исключения, поставьте галочку в поле для броузера для исключений CLR. Установите для целевой платформы проекта значение AnyCPU, если вы отлаживаете машину с 64-разрядной операционной системой. –
Я думаю, что ваша коллекция SelectedItems пуста или null, и доступ к ней на [0] вызывает исключение. Если ListView имеет элемент внутри, это не означает, что он должен быть выбран. Просто Угадай. – Tigran
Что они сказали. –