C# 窗体间传值方法大汇总(转)
发布时间:2021-05-20 14:35:53 所属栏目:大数据 来源: https://blog.csdn.net/kasama1
导读:http://bbs.csdn.net/topics/390128592 第一种方法: 创建一个类,里面声明用于存储接收的字段。传的时候存储于字段中,要用的时候,直接类名.字段名?进行调用。(这种方法传递是双向的) ? 第二种方法: 1.在Form1里定义 public?string?Name?=?"*****" 2.?
http://bbs.csdn.net/topics/390128592 第一种方法: 创建一个类,里面声明用于存储接收的字段。传的时候存储于字段中,要用的时候,直接类名.字段名?进行调用。(这种方法传递是双向的)? 第二种方法: 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??d 但是这样的传值是单向的 第四种方法:通过窗体的公有属性值(特点:实现简单) 举例“在窗体Form2中定义一个公有属性Form2Value,获取和设置textBox1的文本值 public?string?Form2Value? ?????get? ?????{? ??????????return?this.textBox1.Text;? ?????}? ?????set? ?????????this.textBox1.Text?=?value;? }? Form2?f2?=?new?Form2?(?);? f2.Form2Value?=?"Ok";?//给Form2的textBox1赋值Ok? f2.ShowDialog?(?);? 第五种方法:通过窗体的公有属性值和Owner属性(特点:实现简单,灵活) 在窗体Form1中 public?int?Form1Value?=?1;? f2.ShowDialog?(?this?);?//把Form1作为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版中) 实现代码如下:? f2.Show?(?);? 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中定义公有属性Form2Value,获取和设置textBox1的文本值? 并且还定义一个accept事件 ????{? ????}? public?event?EventHandler?accept;? private?void?button1_Click?(?object?sender?,?EventArgs?e?)? ?????if?(?accept?!=?null?)? ??????????accept?(?this?,?EventArgs.Empty?);?//当窗体触发事件,传递自身引用? f2.accept?+=?new?EventHandler?(?f2_accept?);? void?f2_accept?(?object?sender?,?EventArgs?e?) ?????//事件的接收者通过一个简单的类型转换得到Form2的引用? ?????Form2?f2?=?(Form2)?sender;? ?????//接收到Form2的textBox1.Text? ?????this.textBox1.Text?=?f2.Form2Value;? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |