当前位置: 移动技术网 > IT编程>开发语言>c# > C#中序列化实现深拷贝,实现DataGridView初始化刷新的方法

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

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初始化刷新的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网