如何从Form1访问位于Form2中的类值? C#

时间:2012-08-14 19:28:19

标签: c# forms class

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

Form1中

 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;
    }

谢谢大家

2 个答案:

答案 0 :(得分:1)

这样做

Form1中

 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;
}

为MyObject

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

}

答案 1 :(得分:1)

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

你还应该给MyObject一个更好的名字;这些东西更能描述它实际上做什么/持有什么。

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

public MyObject PropertyName {get; private set;}

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

然后,您可以通过说Form2

ProperyName = new MyObject();内进行设置

然后,您可以使用Form1ShowDialog(致电{1}}后)访问该媒体资源。