Я сталкивался с этим много раз за эти годы.Мое решение состоит в том, чтобы иметь переменную уровня класса с именем _noise, и если я знаю, что собираюсь изменить индекс комбинированного или любого другого подобного элемента управления, который срабатывает при изменении выбранного индекса, я делаю в коде следующее
private bool _noise;
Вот код для обработчика события управления
private void cbTest_SelectedIndexChange(object sender, EventArgs e)
{
if (_noise) return;
// process the events code
...
}
Затем, когда я знаю, что собираюсь изменить индекс, я делаю следующее:
_noise = true; // cause the handler to ignore the noise...
cbTest.Index = value;
_noise = false; // let the event process again