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; }

浙公网安备 33010602011771号