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

发布时间 - 2026-01-10 23:09:26    点击率:

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


# datagridview  # 序列化  # C#类的创建与初始化实例解析  # C#控制台基础 list<>初始化的两种方法  # c# 类成员初始化顺序的特殊情况  # 给大家  # 绑定  # 希望能  # 这个时候  # 这篇  # 小编  # 大家多多  # 单元格  # Serializable  # public  # csharp  # brush  # class  # DtoColumn  # MemoryStream  # ms  # capacity  # Clone  # object 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 详解Oracle修改字段类型方法总结  bing浏览器学术搜索入口_bing学术文献检索地址  如何在云主机快速搭建网站站点?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Windows Hello人脸识别突然无法使用  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  Laravel如何使用Collections进行数据处理?(实用方法示例)  智能起名网站制作软件有哪些,制作logo的软件?  如何用PHP快速搭建CMS系统?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel怎么上传文件_Laravel图片上传及存储配置  JavaScript如何实现错误处理_try...catch如何捕获异常?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何在阿里云ECS服务器部署织梦CMS网站?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel如何使用Blade模板引擎?(完整语法和示例)  javascript基本数据类型及类型检测常用方法小结  如何快速生成橙子建站落地页链接?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  如何快速生成凡客建站的专业级图册?  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  Linux系统命令中tree命令详解  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  iOS UIView常见属性方法小结  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  网站制作壁纸教程视频,电脑壁纸网站?  如何用腾讯建站主机快速创建免费网站?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  js代码实现下拉菜单【推荐】  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  轻松掌握MySQL函数中的last_insert_id()  新三国志曹操传主线渭水交兵攻略  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  手机软键盘弹出时影响布局的解决方法  如何在Windows环境下新建FTP站点并设置权限?  Laravel如何保护应用免受CSRF攻击?(原理和示例)  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  创业网站制作流程,创业网站可靠吗?  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  如何自定义建站之星网站的导航菜单样式?  Python结构化数据采集_字段抽取解析【教程】  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Android 常见的图片加载框架详细介绍  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  电商网站制作价格怎么算,网上拍卖流程以及规则?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】