首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >winforms -要克隆的点表单

winforms -要克隆的点表单
EN

Stack Overflow用户
提问于 2011-10-16 18:40:13
回答 1查看 188关注 0票数 0

我的程序类有:

代码语言:javascript
复制
Application.Run(new Form1());

在form1类中,我有:

代码语言:javascript
复制
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");
}

在模型类中,我有:

代码语言:javascript
复制
    public Model(Form1 form1)
    {
        myform = form1;
    }

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

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

我得到这个错误:“无法赋值给this,因为它是只读的”

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-16 18:53:01

一个问题-当克隆两个模型引用相同的Form时,这是预期的行为吗?Clone()方法只是创建了一个新的模型实例,但它仍然引用相同的Form对象。

您可以将初始模型的状态持久化到其他私有字段中,如

代码语言:javascript
复制
private Model backupModel;

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

代码语言:javascript
复制
 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");
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7783753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档