2011-02-27 100 views
8
int[] arr = int[100]; 
listBox1.DataSource = arr; 
void ComboBox1SelectedIndexChanged(object sender, EventArgs e) 
{ 
    .....//some processes 
    listBox1.DataSource = null; 
    listBox1.DataSource = arr; 
} 

is not working, 

列表框刷新()在c#

listBox1.Refresh(); is not working, 

listBox1.Update(); is not working, 


我知道我可以使用BindingList<T>但我有隻陣列工作。

你能幫我怎麼刷新列表框嗎?

回答

0

嘗試以下

listBox1.DataBind() 
+0

它也許在.NET 3.5及以上工作,例如有沒有辦法來刷新.NET 2.0 – ocanal

+7

有NET 4.0中沒有DataBind() – fnc12

0

使用的BeginUpdate和EndUpdate,應該解決這個問題。 無需設置數據源兩次

listBox1.BeginUpdate(); 

listBox1.DataSource = myList; 

listBox1.EndUpdate(); 
+0

不是它也無法正常工作。 – ocanal

1

良好,沒有結合我只跟管理:

this.Hide(); 
this.Show(); 

重繪一切......

2

設法做只是

FirstListBox.DataContext = null; 
FirstListBox.DataContext = App.ViewModel; 

只是丟失鏈接並獲取所有數據。

0

我繼承了ListBox,並添加了一個名爲RefreshItems()的公共方法,它可以做我們想要的。已經實施和所有。我不知道他們爲什麼沒有使用公開的方法。

10

我在堆棧交換這裏的第一個答案。

C#.NET 4.0:

listBox1.DataSource = null; 
listBox1.DataSource = names; 

我注意到,設置數據源的第一次,它刷新。 當它被設置,並且您嘗試再次將其設置爲同一個時,它不會更新。

所以我把它設置爲null,將它設置爲同一個,並且在這個問題上對我來說顯示正確。

+1

這應該是被接受的答案。 – Kehlan

1

該問題可能來自ListBox SelectionMode。

由於我不知道的原因,當SelectionMode是SelectionMode.None時,數據綁定不起作用。

一種解決方法可以是:

listBox.SelectionMode = SelectionMode.MultiExtended; 
listBox.DataSource = myDatasource; 
listBox.SelectionMode = SelectionMode.None; 

希望它能幫助。

+0

謝謝 - 尋找年齡,..這是我的問題。微軟真的很爛! –

0

在加載完成之前,Windows窗體特別是在Listbox和其他控件上查看更改非常棘手。 將數據視爲其加載使用invalidate();然後Update();

2

當綁定在dataSource上的對象notifys擁有更改時,ListBox僅更新其顯示的內容。 BindingSource對象有一個名爲DataSourceChanged的事件。當源被更改爲不同的對象時,Listbox將自行更新。 當你綁定一個列表時,它是一樣的。如果您更改列表,則不會發生任何事情,因爲列表不會通知它已被更改。這個問題有一個簡單的解決方案:使用BindingList http://msdn.microsoft.com/de-de/library/ms132679%28v=vs.110%29.aspx

BindingList有ListChanged事件每次當List被改變時(顯然)被調用。所以Windows.Form對象的DataBindings使用ListChanged這樣的事件來更新自己。一個簡單的List不支持這個事件。

所以如果你想了很多數據綁定的,你應該知道的工作: http://msdn.microsoft.com/de-de/library/system.componentmodel.inotifypropertychanged%28v=vs.110%29.aspx

+0

但有足夠的情況下,您不想更新現有的BindingList,但用另一個替換它。然後它不會自動更新,因爲DataSource仍然指向舊的。 – Binarian