我有这个问题,我已经设置了一个属性值,我们说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获取值。
先谢谢你们!
答案 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: