我的课程班有:
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对象的按钮大小非常大。用户在文本框中输入值后:克隆模型对象并调用使按钮非常小的方法。如何设置模型对象以指向具有大按钮的原始模型对象?
我收到此错误: “无法分配给它,因为它是只读的”
我知道我只能更改按钮大小,但我需要克隆整个对象,因为还有其他原始变量需要重置。
答案 0 :(得分:1)
一个问题 - 在克隆两个模型时,预期的行为是否引用相同的Form
? Clone()
方法只创建一个新的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");
}