Обновить элементы ComboBox, самый простой способ
Я много гуглил. И много чего нашел. К сожалению, нет ничего прямого, легкого и, самое главное, простого. Я хочу, чтобы какой-нибудь парень написал method
что происходит List<string>
и удаляет предыдущие Items
, тогда установите это List<string>
.
в настоящее время у меня есть метод, но он не без ошибок.
public void refreshList(List<string> list){
albumList.Items.Clear();
albumList.DataSource = list;
}
5 ответов
вам не нужен список альбомов.Предметы.Clear();
этот код работает просто отлично
public void refreshList(List<string> list){
albumList.DataSource = list;
}
для тех, кто все еще интересно.
вы можете использовать BindlingList и BindingSource.
BindingList<YOUR_CLASS_TYPE> bindinglist = new BindingList<YOUR_CLASS_TYPE>()
BindingSource bSource = new BindingSource();
bSource.DataSource = bindinglist;
ComboBox.DataSource = bSource;
вы добавляете все элементы в свой bindinglist, и они будут автоматически обновляться в вашем combobox.
Если вам нужен сортируемый combobox, вы можете создать BindingList с контейнером, который наследуется от IList, например List, который имеет функцию сортировки. Затем вы можете отсортировать эту ссылку IList, и она будет отражена снова в поле со списком.
при привязке к источнику данных,Items.Clear();
не работает. Это должно быть:
albumList.DataSource = list;
или, чтобы быть уверенным:
albumList.DataSource = null;
albumList.DataSource = list;
Если вы используете источник данных, вам нужно очистить элементы для появления нового списка. Поскольку вы не можете очистить при использовании источника данных, вам нужно сначала установить его в null.
albumList.DataSource = null;
albumList.Items.Clear();
albumList.DataSource = list;
Я работаю над задачей с подобной проблемой, как это
начальное решение установить источник данных в null и переназначить список обратно в него не сработало вообще. Хотя он очистил элементы и показал новые элементы в списке, он сделал выбор любого из элементов в этом списке невозможным. Но, покопавшись в Интернете, я нашел старое решение VB, которое в конечном итоге работало и имело предполагаемый эффект.
вот что вам нужно do:
-
очистить список объектов до заселения ее. См. код ниже:
//adding the instantiation of the list object so you know what I'm clearing List<string> listExample = new List<string>(); listExample.Clear();
-
обновите comboBox, чтобы он поднял новый список. См. код ниже:
if (albumList.DataSource == null) { albumList.DataSource = listExample; } else { albumList.Refresh(); }