C#中序列化实现深拷贝,实现DataGridView初始化刷新的方法
程序员文章站
2022-06-12 22:50:22
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初始化刷新的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: C# string格式的日期时间字符串转为DateTime类型的方法
下一篇: 深入浅析C#泛型类型
推荐阅读