从没有Ref的Form创建对象

时间:2012-07-31 06:08:42

标签: c#

  

可能重复:
  Cloning objects in C#

我的代码:

private void button1_Click(object sender, EventArgs e)
{
    CopyForm(new Form1());
}

public void CopyForm(Form form)
{
    Form frm = form;
    frm.Text = "1";
    form.Text = "2";

    string c = frm.Text;// out 2
    string c2 = form.Text;// out 2
}

如何从表单without Ref创建对象?

请告诉我最好的方法。

编辑:

请抽样。

1 个答案:

答案 0 :(得分:2)

您可以使用Copy Constructor或使用ICloneable's Clone method来填写表单。

以下是Copy Constructor的一个简单示例。您需要创建自己的表单类并向其添加copyConstructor方法。

class MyClonableForm:Form
{

public MyClonableForm(Form oldForm)//Copy Constructor
{
this.Text=oldForm.Text;
//write your clone code here
//be careful with reference types!
}

}

注意

不建议使用ICloneable接口,因为它没有指定执行的克隆类型,即深度或浅度。

如果您确实想要使用它,您可以但不要公开公开克隆方法。请将它用于您自己的目的!