旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

C#中序列化完成深拷贝和DataGridView初始化革新的要领引见【C#.Net教程】,C#,深拷贝,DataGridView

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:84评论:0


导读:下面小编就为人人带来一篇C#中序列化完成深拷贝,完成DataGridView初始化革新的要领。小编以为挺不错的,如今就分享给人人,也给人人做个参考。一同追随小编过来看看吧w...
下面小编就为人人带来一篇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初始化革新的要领引见的细致内容,更多请关注ki4网别的相干文章!

标签:C#深拷贝DataGridView


欢迎 发表评论: