c#中的列表框刷新()

int[] arr = int[100]; listBox1.DataSource = arr; void ComboBox1SelectedIndexChanged(object sender, EventArgs e) { .....//some processes listBox1.DataSource = null; listBox1.DataSource = arr; } is not working, 

也,

 listBox1.Refresh(); is not working, 

也,

 listBox1.Update(); is not working, 

我知道我可以使用BindingList但我必须只使用数组。

你能帮帮我怎样才能刷新列表框?

尝试以下方法

 listBox1.DataBind() 

我在这里的堆栈交换的第一个答案。

C#.Net 4.0:

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

我注意到第一次设置数据源,它会刷新。 当它被设置,并且您尝试再次将其设置为同一个时,它不会更新。

所以我把它设为null,把它设置为同一个,并且这个问题正确地显示给我。

管理只做

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

简单地丢失链接并将所有数据返回给它。

当在dataSource上绑定的对象通知它自己的更改时,ListBox仅更新其显示的内容。 BindingSource对象有一个名为DataSourceChanged的事件。 当Source更改为其他对象时,Listbox将自行更新。 绑定List时也是如此。 如果更改List,则不会发生任何事情,因为List不会通知它已被更改。 这个问题有一个简单的解决方案:使用BindingList http://msdn.microsoft.com/de-de/library/ms132679%28v=vs.110%29.aspx

每次更改List时(显然)都会调用BindingList并调用ListChanged事件。 因此,Windows.Form对象的DataBindings使用ListChanged之类的事件来更新自己。 一个简单的List不支持此事件。

因此,如果您想使用大量数据绑定,您应该了解: http : //msdn.microsoft.com/de-de/library/system.componentmodel.inotifypropertychanged%28v=vs.110%29.aspx

这些链接可能有帮助。

如何更新列表框项(C#)? – http://arstechnica.com/civis/viewtopic.php?f=20&t=554717

将ArrayList绑定到ListBox – http://www.java2s.com/Tutorial/CSharp/0460__GUI-Windows-Forms/BindArrayListtoListBox.htm

好吧,没有约束我只管理:

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

它重绘了一切……

我inheritance了ListBox并添加了一个名为RefreshItems()的公共方法,它可以实现我们想要的function。 已经实施了所有。 我不知道为什么他们没有采用公共方法。

问题可能来自ListBox SelectionMode。

由于我不知道的原因,当SelectionMode是SelectionMode.None时,数据绑定不起作用。

解决方法可能是:

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

希望能帮助到你。

使用应该解决它的BeginUpdate和EndUpdate。 无需设置数据源两次

 listBox1.BeginUpdate(); listBox1.DataSource = myList; listBox1.EndUpdate(); 

Windows窗体在加载完成之前查看更改,特别是在Listbox和其他控件上是很棘手的。 要查看数据作为其加载使用invalidate(); 然后Update();