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


本文摘自PHP中文网,作者黄舟,侵删。

下面小编就为大家带来一篇C#中序列化实现深拷贝,实现DataGridView初始化刷新的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

大致代码如下:

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[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. 通过拷贝一份数据来达到刷新的目的:

1

2

3

4

5

6

7

8

9

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#多线程之线程同步(图文)

C#中textbox输入框自动提示、自动完成、自动补全功能的具体详解(图文)

C#开发实例-订制屏幕截图工具(五)针对拖拽时闪烁卡顿的优化

C#中tostring数据类型格式大全(千分符)总结

详解C#接口在派生类和外部类中的调用方法示例

实现C#遍历文件夹及子目录下所有图片的示例代码分享

C#执行原理深入解析(图文)

C#计算标准偏差相当于excel中的stdev函数的代码案例

C#中的委托实例代码详解(图文)

文件路径和文件夹路径在C#中使用浏览按钮获得的方法

更多相关阅读请进入《C#》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...