Вы не можете отменить его.
То, что я сделал всего пару дней назад, - это наличие переменной с последним выбранным индексом. Затем, когда событие запускается, вы спрашиваете пользователя, хочет ли он сохранить, это делается в обработчике событий. Если пользователь выбрал «Отмена», вы снова меняете идентификатор.
Проблема в том, что это вызовет повторное событие. Так что я использовал бул, просто говоря «Запретить». И в верхней части обработчика событий у меня есть:
if(Inhibit)
return;
Тогда ниже этого, где вы задаете вопрос, вы делаете что-то вроде этого:
DialogResult result = MessageBox.Show("yadadadad", yadada cancel etc);
if(result == DialogResult.Cancel){
Inhibit = true; //Make sure that the event does not fire again
list.SelectedIndex = LastSelectedIndex; //your variable
Inhibit = false; //Enable the event again
}
LastSelectedIndex = list.SelectedIndex; // Save latest index.