我正在研究BindingList,我想改变它的默认行为,以便在我手动引发事件时刷新它所包含的DataGridView。在我的情况下,我每隔1秒用foreach循环中的数据更新BindingList,并且在所有内容都是最新的之后我想刷新DataGridView。我该怎么办?
答案 0 :(得分:2)
查看MSDN文档,看起来您可以从BindingList<T>
派生并覆盖BindingList<T>.SupportsChangeNotificationCore
以关闭列表更改通知:
public class MyBindingList<T> : BindingList<T>
{
protected override bool SupportsChangeNotificationCore
{
get { return false; }
}
}
然后,当您需要更新DataGridView时,您应该可以调用ResetBindings()
。
但是,如果通过&#34;更新BindingList&#34;,您只是意味着添加/删除项目,那么您可以将BindingList<T>.RaiseListChangedEvents
设置为false以关闭列表更改的通知:
var bindingList = new BindingList<string>();
bindingList.RaiseListChangedEvents = false; // turn off notifications
bindingList.Add("foo"); // no notifications raised
...
bindingList.RaiseListChangedEvents = true; // turn on notifications
bindingList.ResetBindings(); // raise notifications
答案 1 :(得分:0)
你可以:
通常你也可以使用BindingSource.SuspendBinding来阻止更改,并且ResumeBinding可以恢复,但这对DataGridView不起作用,只有像TextBox这样的简单控件(参见remarks on msdn)