文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>windows form之间传值

windows form之间传值

时间:2010-10-27  来源:因是因非

 

在windows form之间传值,大概有四个方法:全局变量、属性、窗体构造函数和delegate。

 

1.全局变量:

在form1中定义一个public static类型的变量s,在form2中直接以form1.s的形式引用即可。

2.利用属性

如果传递的内容为类,则是按地址(引用)来传递的。

假设有两个form和一个Person.cs的类文件。通过form1 来调用form2 。程序如下:

 

    public class Person
{
public int age=0;
public void changeAge(int _age)
{
this.age=_age;
}
}

 


 

 

Form1.cs
    public partial class Form1 : Form
{
private Person person;

public Form1()
{
InitializeComponent();
person
= new Person();
Form2 form2
= new Form2();
form2.person
= this.person;
form2.Show();
}

private void Form1_Load(object sender, System.EventArgs e)
{
//pass person to form2 and popup form2

}

//change age
private void btnChange_Click(object sender, EventArgs e)
{
person.age
= 1;
}

//get age
private void btnGet_Click(object sender, EventArgs e)
{
this.textBox1.Text = person.age.ToString();
}
}

 


 

 

Form2.cs

 

运行程序你会发现,无论修改form1/form2中的person 的age值,另外一个的也跟着改变,这是因为两个form引用的是同一个person对象。当我们想在form之间传值时,而且还想让值之间有一定的联系,那么就把这些值用class来包起来,再传。这样又清楚又省事。

如果你传的不是类而是一般数据(int , string )等,那么这些数据在form之间是没有联系的,因为C#在定义这些数据类型时,就默认new了他们,例如:int i ; 和int i = new int() ;。像下面这样的 class :

 

class temp
{
int i ;
int[] mm;
public temp ()
{ mm
= new int [10] ; }
}

 

 

在form之间传递时,变量  i  是两个窗体共用的,但是mm 却不是,其原因就是我上面讲的那样,所以利用property的这个特性,我们可以灵活的在form之间传递我们想变和不想变的值。

 

3.用含参构造函数:

 

Form2 的构造函数:

public Form2( int i )

{

    InitializeComponent();

    textBox1.Text = i.ToString();

}

Form1 内调用

    Form2 temp = new Form2( 9 );

 

 

4.Delegate

Form2中先定义一个delegate

public delegate void returnvalue( int i );

public returnvalue ReturnValue;

form2 中的button按钮代码如下:

private void button1_Click(object sender, System.EventArgs e)

{

    if ( ReturnValue != null )

        ReturnValue( 8 );

}

 

Form1中的button按键如下:

private void button1_Click(object sender, System.EventArgs e)

{

    Form2 temp = new Form2( );

    temp.ReturnValue = new temp.Form2.returnvalue( showvalue );

    temp.Show();

}

 

private void showvalue( int i )

{

    textBox1.Text = i.ToString();

}

 

点击form2的button,form1中的textbox中的值就会相应变化。

 

在这四个方法中,

第一个是双向传值,也就是说,form1和form2改变i的值,另一方也会受到影响。

第二个方法可以单向也可以双向传值。

第三个方法是form1->form2单向传值。

第四个方法是form2->form1单向传值。

 

还有一个就是用event,和delegate差不多


源自:http://www.cnblogs.com/njnudt/archive/2007/08/03/841004.html 稍作修改

相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载