雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁 > 軟件編程 > C#教程 >

C#中序列化實(shí)現(xiàn)深拷貝,實(shí)現(xiàn)DataGridView初始化刷新的方法

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊:

winfrom中DataGridView在的單元格在編輯時(shí)候會(huì)修改它的數(shù)據(jù)源的,如果我們遇到這樣一種情景,刷新數(shù)據(jù)源到原始狀態(tài),這個(gè)時(shí)候要么數(shù)據(jù)源的重新獲取綁定,要么通過拷貝一份原始檔的數(shù)據(jù)再綁定處理,這里介紹拷貝方式處理。

大致代碼如下:

1.目標(biāo)對需要序列化,并實(shí)現(xiàn)ICloneable 接口:

[Serializable]
public class DtoColumn : ICloneable2.實(shí)現(xiàn)接口方法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. 通過拷貝一份數(shù)據(jù)來達(dá)到刷新的目的:

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#中序列化實(shí)現(xiàn)深拷貝,實(shí)現(xiàn)DataGridView初始化刷新的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持我們。

上一篇:winform dateTime數(shù)據(jù)類型轉(zhuǎn)換方法

欄    目:C#教程

下一篇:c# Winform 程序自動(dòng)更新實(shí)現(xiàn)方法

本文標(biāo)題:C#中序列化實(shí)現(xiàn)深拷貝,實(shí)現(xiàn)DataGridView初始化刷新的方法

本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5885.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有