Коллекция ComboBox Items представляет собой ObjectCollection, поэтому, конечно, вы можете хранить там все, что захотите, но это означает, что вы не получите свойство Text, как, например, с ListViewItem. ComboBox отображает элементы, вызывая ToString () для каждого элемента или используя отражение, если установлено свойство DisplayMember.
Мой ComboBox находится в режиме DropDownList. У меня есть ситуация, когда я хочу обновить текст элемента одного элемента в списке, когда он выбирается пользователем. Проблема в том, что ComboBox не выполняет повторный запрос текста в любое время, кроме того, когда он загружается, и я не могу понять, как еще сделать то, что я хочу, кроме удаления и повторного добавления выбранного элемента, например, так:
PlantComboBoxItem selectedItem = cboPlants.SelectedItem as PlantComboBoxItem;
// ...
cboPlants.BeginUpdate();
int selectedIndex = cboPlants.SelectedIndex;
cboPlants.Items.RemoveAt(selectedIndex);
cboPlants.Items.Insert(selectedIndex, selectedItem);
cboPlants.SelectedIndex = selectedIndex;
cboPlants.EndUpdate();
Этот код работает нормально, за исключением того факта, что мое событие SelectedIndex завершается тем, что его запускают дважды (один раз для исходного пользовательского события, а затем снова, когда я повторно устанавливаю свойство в этом коде). В этом случае не имеет большого значения, что событие запускается дважды, но оно неэффективно, и я ненавижу это. Я мог бы установить флаг, чтобы он выходил из события во второй раз, но это взлом.
Есть ли лучший способ заставить это работать?