Свяжите каждый элемент в вашей разметке с тем же SelectedIndexChangedEvent и приведите отправителя в качестве вашего элемента. Итак, в вашем коде найдите все уникальные имена событий (т.е. cbSlots0_SelectedIndexChanged, cbSlots1_SelectedIndexChanged и т. Д.) И переименуйте их в одно имя события (например, cbSlotsSelectedIndexChanged).
Я думаю, что это правильно. Проверьте.
КОД:
private void cbSlotsSelectedIndexChanged(object sender, EventArgs e)
{
ComboBox cBox = (ComboBox) sender;
int tag = (int)cBox.Tag;
var item = ConfigClass.Slots[tag.ToString()][cBox.SelectedIndex];
ConfigClass.Slots[tag.ToString()].Insert(tag, item);
ConfigClass.Slots[tag.ToString()].RemoveAt(item.SelectedIndex + 1);
}
UPDATE:
Я изменил свой пост в соответствии с просьбой
private void cbSlotsSelectedIndexChanged(object sender, EventArgs e)
{
var cb = ((ComboBox)sender);
var tag = int.Parse(cb.Tag.ToString());
var item = ConfigClass.Slots[tag.ToString()][cb.SelectedIndex];
ConfigClass.Slots[tag.ToString()].Insert(tag, item);
ConfigClass.Slots[tag.ToString()].RemoveAt(cb.SelectedIndex + 1);
}