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();