将值设置为Form1中Class1中的属性,然后使用C#Windows窗体获取Class1到Form2中该属性的值

时间:2011-09-26 06:33:49

标签: c# winforms

我有这个问题,我已经设置了一个属性值,我们说Form1,然后在Form2中获取该值,但它返回null。

示例代码。

//Sample.cs
public class Sample
{
    private string exchange;

    public Sample()
    {
    }

    public string Exchange
    {
        get { return exchange; }
        set { exchange = value; }
    }
}

//From Form1 set value
private void setBtn_Click_1(object sender, EventArgs e)
{
    Sample testing = new Sample();

    testing.Exchange = exchange.Text;
}

//From Form2 get value
private void getBtn_Click_1(object sender, EventArgs e)
{
    Sample testing2 = new Sample();
    string exchange2 = testing2.Exchange;
}

这是问题,exchange2的值为null,我知道它因为我声明了一个新实例,请告诉我如何使用已在Form1中设置的Form2获取值。

先谢谢你们!

3 个答案:

答案 0 :(得分:1)

可以返回null,因为您每次都创建一个新对象

Sample testing2 = new Sample();

在Form2类中声明公共属性

  class Form2
  {
     public Sample MySample {get; set;}
  }
private void setBtn_Click_1(object sender, EventArgs e)
{
Sample testing = new Sample();

Form2 form2 = new Form2();
form2.MySample = testing;
form2.Show();
}

答案 1 :(得分:0)

如果要以这种方式使用类和属性,请将交换字段设置为静态,以便在类的所有实例之间共享。静态字段与类相关,而不是与实例相关,在您的情况下,从Form1和Form2创建不同的类实例。

答案 2 :(得分:0)

以下几种可能性:

1)声明属性static:

public static string Exchange{get;set;}

2)以某种方式将Form1中创建的对象传递给Form2: