У меня есть два списка.Первый из них жестко запрограммирован и его содержание никогда не меняется.Второй может быть отредактирован пользователем для добавления, изменения и удаления элементов:
public List<Item> DefaultItems = new List<Item>();
public BindingList<Item> UserItems = new BindingList<Item>();
...
MyTable.DataSource = UserItems;
Я хотел бы связать содержимое обоих списков, один за другим, с ComboBox и автоматически обновлять его припользователь редактирует список UserItems.
Первая часть, которую я легко могу решить с помощью чего-то вроде:
public List<Items> AllItems
{
get
{
List<Item> Items = new List<Item>();
foreach (Item I in DefaultItems) Items.Add(I);
foreach (Item I in UserItems) Items.Add(I);
return Items;
}
}
...
MyComboBox.DataSource = AllItems;
Проблема заключается в том, что при изменении UserItems не появляется уведомление об изменении AllItems, поэтомусодержимое поля со списком остается прежним.
Затем я добавил событие, которое генерируется при изменении UserItems.Теперь моя проблема в том, как заставить ComboBox обновиться.Выполнение следующих действий:
MyComboBox.DataSource = null;
MyComboBox.DataSource = AllItems;
приводит к тому, что выбранный элемент становится нулевым, а выбранный индекс становится равным -1, что я затем должен обработать в своем коде (временно запомнить текущий элемент, восстановить его впоследствии и т. Д.).Все становится очень грязным, и я уверен, что есть умный способ решить эту проблему.
спасибо, Энди
ОБНОВЛЕНИЕ: Я не хотел добавлять еще код и сложность только для этого в виде сторонней сборки, поэтому я просто продолжил свойгрязный подход.Благодаря.