我的程序类有:
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对象的按钮非常大。用户在文本框中输入值后:我克隆模型对象并调用一个方法,使按钮变得非常小。然后,我如何设置模型对象,使其指向具有大按钮的原始模型对象?
我得到这个错误:“无法赋值给this,因为它是只读的”
我知道我可以只改变按钮的大小,但我需要克隆整个对象,因为我还想重置其他原始变量。
发布于 2011-10-16 18:53:01
一个问题-当克隆两个模型引用相同的Form时,这是预期的行为吗?Clone()方法只是创建了一个新的模型实例,但它仍然引用相同的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");
}https://stackoverflow.com/questions/7783753
复制相似问题