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网别的相干文章!