Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# winforms-指向要克隆的表单_C#_.net_Winforms_Visual Studio - Fatal编程技术网

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:所以问题在于克隆方法,它不是表单的克隆。所以你们克隆了模型,但形式还是一样的。我建议使用二进制序列化来实现此目的