winforms - 指向克隆的形式

时间:2011-10-16 10:40:13

标签: c# .net winforms visual-studio

我的课程班有:

Application.Run(new Form1());

在form1类中我有:

model = new Model(this);

    private void userEnteredText()
 {
       Model clonedModel = (Model)model.Clone();
       this.myButton.Size = new System.Drawing.Size(10,5);
       MessageBox.Show("buttons made small");
       this = clonedModel;
      MessageBox.Show("clone complete and buttons restored to orig size");
}

在模型类中我有:

    public Model(Form1 form1)
    {
        myform = form1;
    }

public object Clone()
{
   return new Model(myform);
}

我的初始form1对象的按钮大小非常大。用户在文本框中输入值后:克隆模型对象并调用使按钮非常小的方法。如何设置模型对象以指向具有大按钮的原始模型对象?

我收到此错误: “无法分配给它,因为它是只读的”

我知道我只能更改按钮大小,但我需要克隆整个对象,因为还有其他原始变量需要重置。

1 个答案:

答案 0 :(得分:1)

一个问题 - 在克隆两个模型时,预期的行为是否引用相同的FormClone()方法只创建一个新的Model实例,但它仍然引用相同的Form对象,

您可以将初始模型的状态保存在其他私有字段中,例如

private Model backupModel;

在应用用户定义的值之前,只需备份并稍后恢复当前模型,如:

 private void userEnteredText()
 {
       this.backupModel = model;     
       Model clonedModel = (Model)model.Clone();
       this.myButton.Size = new System.Drawing.Size(10,5);
       MessageBox.Show("buttons made small");
       model = this.backupModel;     
       MessageBox.Show("clone complete and buttons restored to orig size");
 }