好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#中序列化实现深拷贝,实现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初始化刷新的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于C#中序列化实现深拷贝,实现DataGridView初始化刷新的方法的详细内容...

  阅读:50次