Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用BindingList批量更新Datagridview_C#_Datagridview_Bindingsource_Bindinglist - Fatal编程技术网

C# 使用BindingList批量更新Datagridview

C# 使用BindingList批量更新Datagridview,c#,datagridview,bindingsource,bindinglist,C#,Datagridview,Bindingsource,Bindinglist,我有一个绑定到绑定列表的DataGridView,我必须每5秒更新一次datagrid。更新可以是添加、删除或修改。问题是,由于我按项更新了BindingList,因此DataGridViewUI不断更新以反映更改,结果是处理时间很长。我想停止更新DataGridViewUI,只在整个更新完成后刷新DataGridViewUI 我尝试使用普通列表作为绑定源,并在更新完成后通知DataGridView重新绑定源。但问题是,重新绑定后滚动条会重置,因此我必须记住滚动条的位置,但是,如果用户在更新时单

我有一个绑定到绑定列表的
DataGridView
,我必须每5秒更新一次datagrid。更新可以是添加、删除或修改。问题是,由于我按项更新了
BindingList
,因此
DataGridView
UI不断更新以反映更改,结果是处理时间很长。我想停止更新
DataGridView
UI,只在整个更新完成后刷新
DataGridView
UI


我尝试使用普通列表作为绑定源,并在更新完成后通知
DataGridView
重新绑定源。但问题是,重新绑定后滚动条会重置,因此我必须记住滚动条的位置,但是,如果用户在更新时单击滚动条,则滚动操作会被此修复中断。

能否将单个模型更改为不进行INotifyPropertyChanged?@beattyac,您能详细说明一下这一点吗?在绑定时,如果您的模型实现了INotifyPropertyChanged,则每次项目更改时都会“通知”绑定。如果删除此单个属性通知,则可以在认为合适的时候手动更新绑定,而不是自动更新。@beattyac我认为
BindingList
仍然可以检测添加和删除,即使在该特定情况下没有INotifyPropertyChanged,您也可以使用列表(或任何其他非通知集合),并手动使用以下内容更新绑定:MyUIElement.GetBindingExpression(DataGridView.ItemsSourceProperty).UpdateTarget()