在新行之后更新数据网格视图
本文关键字:数据网 网格 视图 数据 更新 新行 之后 | 更新日期: 2023-09-27 18:35:52
我有一个DataGridView
和一个自定义列表。我使用以下方法绑定它:
datagridview.DataSource = MyList;
问题是每当我从线程向列表中添加新行时,它都不会在 DataGridView 中显示新行。有没有办法我可以简单地覆盖OnNewData
类型的事件DoRefresh()
并且可能而不会丢失滚动位置?
我正在使用的同步列表:
public class SyncList<T> : System.ComponentModel.BindingList<T>
{
private System.ComponentModel.ISynchronizeInvoke _SyncObject;
private System.Action<System.ComponentModel.ListChangedEventArgs> _FireEventAction;
public SyncList()
: this(null)
{
}
public SyncList(System.ComponentModel.ISynchronizeInvoke syncObject)
{
_SyncObject = syncObject;
_FireEventAction = FireEvent;
}
protected override void OnListChanged(System.ComponentModel.ListChangedEventArgs args)
{
if (_SyncObject == null)
{
FireEvent(args);
}
else
{
_SyncObject.Invoke(_FireEventAction, new object[] { args });
}
}
您的列表需要实现 INotifyPropertyChanged 才能自动更新绑定控件才能正常工作。如果这样做,则需要在列表中添加或删除项时引发 PropertyChanged 事件。
或者,只需使用已经正确实现此接口的 BindingList 或 ObservableCollection。
绑定列表:http://msdn.microsoft.com/en-us/library/ms132679.aspx
可观察集合:http://msdn.microsoft.com/en-us/library/ms668604.aspx