普通的传递方式为属性,委托,构造函数传递。
这种传递方式仅实现当Form1打开Form2,将Form2的值传给Form1或者将Form1的值传给Form2。
如果Form1打开Form2,Form2打开Form3,如果要用Form3 调用Form1的方法,因为form1的实体没有传递过来(可以通过Form2传Form1到Form3,但中间环节过多的情况,传递Form有点乱),因此不能使用上面的方法传递。
解决办法:
在Form1里的方法定义为静态方法。
public static void setValue(string str)
{
textBox1.Text = str;
}
这里会报错
这里是因为用静态方法调用了非静态的属性。
解决办法是在Form1里定义一个Form1类型的静态变量,然后在窗体加载事件中将this赋值给这个变量。
在静态方法中就可以通过调用这个静态变量实现对textBox1的赋值。