-1

我有一个快速的问题。我在 Form2 中创建了一个名为“MyObject”的类,其中包含两个变量。按下一个按钮,Form2 中的变量就会改变。现在我的问题是如何在 Form1 中检索 MyObject?这是我的示例代码:

表格1

 public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 f = new Form2(this);

        f.ShowDialog();
        ??????? (how can I retrieve Myobject here?????) 
    }

表格2

public class MyObject
    {
        public int Value1 { get; set; }
        public int Value2 { get; set; }

    }
    public Form2(Form1 frm1)
    {
        InitializeComponent();

    }
    private void button1_Click(object sender, EventArgs e)
    {
        MyObject obj = new MyObject();
        obj.Value1 = 102;
        obj.Value2 = 50;
    }

谢谢大家

4

2 回答 2

1

做这个

表格1

 public Form1()
 {
    InitializeComponent();
 }

 private void button1_Click(object sender, EventArgs e)
 {
    Form2 f = new Form2(this);

    f.ShowDialog();
    MyObject mo = f.GetMyObject;
 }

表格2

public Form2(Form1 frm1)
{
    InitializeComponent();
}

public MyObject GetMyObject 
{ 
    get
    {
        return obj;
    } 
}

MyObject obj;

private void button1_Click(object sender, EventArgs e)
{
    obj = new MyObject();
    obj.Value1 = 102;
    obj.Value2 = 50;
}

我的对象

public class MyObject
{
    public int Value1 { get; set; }
    public int Value2 { get; set; }

}
于 2012-08-14T19:32:52.097 回答
1

您不应该MyObject在内部定义Form2. 你应该把它放在它自己的文件中。您几乎总是希望每个类都有自己的文件。

你也应该给MyObject一个更好的名字;更能描述它实际做/持有的东西。

最后,要真正传递数据,一种简单有效的方法是在 上创建一个属性Form2

public MyObject PropertyName {get; private set;}

(不要忘记将属性重命名为更好的名称。)

然后你可以Form2通过说从内部设置它ProperyName = new MyObject();

Form1然后,您可以使用(在您调用 之后ShowDialog)访问该属性f.PropertyName

于 2012-08-14T19:33:20.163 回答