Я застрял в ситуациях, когда изменение пользовательского интерфейса распространяется на модель, затем изменение модели распространяется обратно на пользовательский интерфейс, и это создает бесконечный цикл. Вы имеете дело с чем-то подобным?
Если это так, единственным выходом является обновление пользовательского интерфейса только из модели, только если они отличаются. То есть:
if (comboBox.SelectedItem != newValue)
comboBox.SelectedItem = newValue;
Если это не дает того, что вы хотите, другой вариант - временно удалить обработчик событий:
comboBox.SelectedIndexChanged -= this.comboBox_SelectedIndexChanged;
comboBox.SelectedIndex = newIndex;
comboBox.SelectedIndexChanged += this.comboBox_SelectedIndexChanged;
или, дать указание обработчику игнорировать это событие:
ignoreComboBoxEvents = true;
comboBox.SelectedIndex = newIndex;
ignoreComboBoxEvents = false;
...
public void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (ignoreComboBoxEvents)
return;
...
}