欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#中序列化实现深拷贝,实现DataGridView初始化刷新的方法

程序员文章站 2023-11-09 18:33:10
winfrom中datagridview在的单元格在编辑时候会修改它的数据源的,如果我们遇到这样一种情景,刷新数据源到原始状态,这个时候要么数据源的重新获取绑定,要么通过拷...

winfrom中datagridview在的单元格在编辑时候会修改它的数据源的,如果我们遇到这样一种情景,刷新数据源到原始状态,这个时候要么数据源的重新获取绑定,要么通过拷贝一份原始档的数据再绑定处理,这里介绍拷贝方式处理。

大致代码如下:

1.目标对需要序列化,并实现icloneable 接口:

[serializable]
public class dtocolumn : icloneable2.实现接口方法clone: 


public object clone()
{
    using (memorystream ms = new memorystream(capacity))
    {
      object cloneobject;
      binaryformatter bf = new binaryformatter(null, new streamingcontext(streamingcontextstates.clone));
      bf.serialize(ms, this);
      ms.seek(0, seekorigin.begin);      
      cloneobject = bf.deserialize(ms);       
      ms.close();
      return cloneobject;
    }
}

3. 通过拷贝一份数据来达到刷新的目的:

private list < dto.dtocolumn > deepclonedata(list < dto.dtocolumn > rawdata) {
  return rawdata.select(x = >x.clone()).cast < dto.dtocolumn > ().tolist()
}

this.datagridview1.dothreadpoolwork(() = >
{
  this.datagridview1.datasource = deepclonedata(cloneinitialcolumndata);
  this.datagridview1.refresh();
});

以上这篇c#中序列化实现深拷贝,实现datagridview初始化刷新的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。