2013-03-15 4 views
0

Когда я вижу это сообщение Here.Перезагрузка Содержимое списка

Однако в моем коде я не вижу DataBind() Метод.

lstBox.DataBind(); 

Как перезагрузить listbox в C# .Net?

Refresh() Метод также не работает.

+0

Под «перезагрузкой», вы имеете в виду обновление привязки данных к списку? – David

+0

Да, я извлекаю данные из базы данных и хочу перезагрузить, когда пользователь вводит текст в текстовом поле. –

ответ

4

Вы можете попробовать использовать ObservableCollection как ItemSource, и все это делается автоматически. Ваша задача состоит в том, чтобы заполнить элементы в ObservableCollection, нет необходимости вручную обновлять.

2

DataBind() предназначен для элементов управления ASP.NET - насколько я знаю, для элементов управления Windows Forms нет эквивалентного метода. Что такое источник данных для вашего списка? Я помню, что у меня была аналогичная проблема, и я решил проблему, привязав свой контроль к объекту BindingSource вместо того, что я использовал. Аналогично, вам может понадобиться привязать ваш Listbox к BindingSource вместо текущего источника данных. От MSDN:

Компонент BindingSource выполняет множество задач. Во-первых, он упрощает привязки элементов управления к форме, предоставляя управление валютой, уведомление об изменении и другие сервисы между элементами управления Windows Forms и источниками данных.

Другими словами, как только вы сделаете изменения в BindingSource (например, вызова BindingSource.Add, или установив свойство DataSource в BindingSource к другой коллекции), ваш ListBox будет автоматически обновляться без необходимости называть «DataBind() "- как метод.

Если ListBox в настоящее время привязан к объекту коллекции, вы можете просто связать свою коллекцию в BindingSource вместо, а затем связать свой контроль в BindingSource:

BindingSource.DataSource = ListboxItems; 
ListBox.DataSource = BindingSource; 

В качестве альтернативы вы можете вручную построить содержимое поля BindingSource:

MyBindingSource.Clear(); 
MyBindingSource.Add(new BusinessObject("Bill", "Clinton", 1946)); 
MyBindingSource.Add(new BusinessObject("George", "Bush", 1946)); 
MyBindingSource.Add(new BusinessObject("Barack", "Obama", 1961)); 

lstBox.DataSource = MyBindingSource; 
Смежные вопросы