winform窗体间互相传值的方法

第一种方法:

创建一个类,里面声明用户存储接受的字段。传的时候存储于字段中,要用的时候,直接类名.字段名进行调用。(这种方法传递是双向的)

 

第二种方法:

1.在Form1里定义 

public string name="*********"

2.在Form2里创建Form1对象,

Form1 f=new Form1();

然后就可以用过f.Name取值了.

 

第三种方法:用构造函数

在窗体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 

但是这样的传值是单向的。

 

第四种方法:通过窗体的公有属性值(特点:实现简单)

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

public string Form2Value
{
  get{return this.textbox1.Text;}
set{this.text.Text=value;}      
}

在窗体Form1中这样调用

Form2 f2=new Form2();

f2.Form2Value="OK";//给Form2的textBox1赋值OK

f2.ShowDialog();

 

第五种方法:通过窗体的公有属性值和Owner属性(特点:实现简单,灵活)

在窗体Form1中

public int Form1Value=1;

Form2 f2=new Form2();

f2.ShowDialog(this);//把Form1作为Form2的所有者传递给Form2

在窗体Form2中

//Form2的所有者是Form1

Form1 f1=(Form1)this.Owner;

//取到Form1的值是1

MessageBox.Show(f1.Form1Value.Tostring());

//给Form1的Form1Value赋值222

f1.Form1Value=222;

 

第六种方法:通过窗体的公有属性值和Application.OpenForms属性(感觉用的比较少)

说明:Application.OpenForms属性:获取属于应用程序的打开窗体的集合。(此属性在.Net FrameWork2.0版中)

实现代码如下:

在窗体Form1中

public int Form1Value=1;

Form2 f2=new Form2();
f2.Show();

在窗体Form2中

string formName="Form1";
Form fr=Application.OpenForms[formName];
if(fr!=null)
{
    Form1 f1=(Form1)fr;
    //取到Form1的值是1
   MessageBox.Show(f1.Form1Value.ToString()) ;
   //给Form1的Form1Value赋值222
    f1.Form1Value=222; 
}

 

第七种方法:通过事件

在窗体Form2中定义公有属性Fom2Value,获取和设置textBox1的文本值,并且还定义一个accept事件

pubic string Form2Value
{
   get
   {
        return this.textBox1.Text
   }
   set
   {
        this.textBox1.Text=value
   }  
}

public event EventHandler accept;

private void button1_Click(object sender,EventArgs e)
{
    if(accept!=null)
   {
       accept(this,EventArgs.Empty);//当窗体触发事件,传递自身引用
   }
}

在窗体Form1中

Form2 f2=new Form2();

f2.accept+=new EventHandler(f2_accept);

f2.Show();



void f2_accept(object sender,EventArgs e)

{

    //事件的接收者通用一个简单的类型转换得到Form2的引用

    Form2 f2=(Form2)sender;

     //接受到Form2的textBox1.Text

    this.textBox1.Text=f2.Form2Value;

}

 

posted @ 2015-11-28 10:21  xiaomaow  阅读(472)  评论(0)    收藏  举报