制作FORM的浅拷贝

时间:2012-10-17 10:05:59

标签: c#

我想制作一个填充表单的浅表副本,所以如果用户选择复选框并按下而不是保存按钮,那么我想用“浅层复制形式”scheduleform2“为空的复选框替换”scheduleform“。但问题是当在“scheduleform”中进行更改时,它们会以某种方式出现在“scheduleform2”中,因此我最终得到了相同的表单数据。例如,当在“scheduleform”中选中复选框时,尽管将其设置为浅层复制,但更改仍显示在“scheduleform2”中。

DefaultScheduleForm scheduleForm2 = new DefaultScheduleForm();

public DefaultScheduleForm ShallowCopy()
{
  return (DefaultScheduleForm)this.MemberwiseClone();
}

scheduleForm2 = scheduleForm.ShallowCopy();

scheduleForm = scheduleForm2;

2 个答案:

答案 0 :(得分:0)

要执行您想要的任务,您需要使用MemberwiseClone表单中的所有控件。

但问题的更好解决方案是保存表单状态,而不是表单本身,取消将表单重新绑定到保存状态。

答案 1 :(得分:0)

浅拷贝意味着你现在正在获得的东西。你应该制作一份深刻的副本,或者仅仅是:

scheduleForm2 = scheduleForm;
scheduleForm = new DefaultScheduleForm();