WinForm窗体之间传值

一、通过静态变量

特点:传值是双向的,实现简单

 

 

实现代码如下:

在一个app类中定义一个静态成员value

 

public class app

{

public static string value;

}

 

在窗体Form1中这样调用

app.value = "f2"; //给静态成员赋值

new Form2 ( ).Show ( ); //显示Form2

 

在窗体Form2

this.Text = app.value; //取回app.value的值

app.value = "Form2"; //app.value赋值,以便其他窗体调用

 

二、公共变量传值

这种方法就是利用一个公共变量,先把需要的值存放到这个公共变量,然后需要的时候再通过读取该变量的值来使用

 

例子

Form1:

public static string Form1Value; // 注意,必须申明为static变量

private void button1_Click(object sender, EventArgs e)

{

Form1Value = "来自Form1";

new Form2().Show();

}

 

Form2:

private void Form_Load(object sender, EventArgs e)

{

MessageBox.Show(Form1.Form1Value);

}

这种方式传值,理解和使用上都相对的简单,但是容易让变量串值,比如第一次修改为“a”,而第二次修改为“b”,则有可能本来需要“a”值的结果变成了“b”。

 

 

三、通过窗体的公有属性值

特点:实现简单

 

 

实现代码如下:

在窗体Form2中定义一个公有属性Form2Value,获取和设置textBox1的文本值

public string Form2Value

{

get

{

return this.textBox1.Text;

}

set

{

this.textBox1.Text = value;

}

}

 

在窗体Form1中这样调用

Form2 f2 = new Form2 ( );

f2.Form2Value = "Ok"; //Form2textBox1赋值Ok

f2.ShowDialog ( );

 

 

四、传参式传值

此方法顾名思义就是将需要的值一参数形式传递给需要值的窗体

 

例子

Form1:

private void button1_Click(object sender, EventArgs e)

{

new Form2("来自Form1").Show();

}

Form2:

public Form2(string value)

{

InitializeComponent();

MessageBox.Show(vaue);

}

此种窗体间传值方法明显优与第一种的传值参数,也不会出现串数据现象,但是需要注意修改Form2的构造函数,每个窗体的默认构造函数默认都是无参数的,因此需要去修改构造函数。

 

 

五、通过构造函数

特点:传值是单向的(不可以互相传值),实现简单

实现代码如下:

在窗体Form2

int value1;

string value2;

public Form2 ( int value1 , string value2 )

{

InitializeComponent ( );

this.value1 = value1;

this.value2 = value2;

}

 

在窗体Form1中这样调用

new Form2 ( 111 , "222" ).Show ( ); //这样就把111,"222",2个值传送给了Form2

 

 

参考资料:     WinForm窗体间如何传值       http://www.studyofnet.com/news/243.html

 

你可能感兴趣的:(C#)