C# winforms-指向要克隆的表单
我的课程有:C# winforms-指向要克隆的表单,c#,.net,winforms,visual-studio,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("bu
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);
}
在模型类中,我有:
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对象的按钮大小非常大。在用户在文本框中输入一个值后:我克隆模型对象并调用一个使按钮变小的方法。然后如何设置模型对象,使其指向带有大按钮的原始模型对象
我得到了这个错误:
“无法分配给此,因为它是只读的”
我知道我可以只更改按钮大小,但我需要克隆整个对象,因为我需要重置其他原始变量。一个问题-克隆两个模型时引用相同的
表单是否会出现预期行为Clone()
方法只是创建了一个新的模型实例,但它仍然引用相同的表单
对象
您可以将初始模型的状态保存在其他私有字段中,如
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");
}
分配clonedModel后,它未被使用,这是一个输入错误吗?我希望能够克隆模型和表单,以便在还原时显示原始表单按钮的大小(即在用户操作之前)。@toop:所以问题在于克隆方法,它不是表单的克隆。所以你们克隆了模型,但形式还是一样的。我建议使用二进制序列化来实现此目的