程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中序列化實現深拷貝,實現DataGridView初始化刷新的方法

C#中序列化實現深拷貝,實現DataGridView初始化刷新的方法

編輯:C#入門知識

C#中序列化實現深拷貝,實現DataGridView初始化刷新的方法。本站提示廣大學習愛好者:(C#中序列化實現深拷貝,實現DataGridView初始化刷新的方法)文章只能為提供參考,不一定能成為您想要的結果。以下是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初始化刷新的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved