你的位置:首页 > ASP.net教程

[ASP.net教程]窗体传值的两种实现方法示例


  这两天看前辈的视频初识了窗体传值,于是自己跟着敲了两个Demo,方便以后复习、分享交流。

 窗体传值的两种方法:1.通过属性构造方法传值  2.利用委托实现传值。  


 

示例1:点击Form1中的按钮打开From2,点击Form2中的按钮改变窗体Form1的背景颜色。

Form1的代码:

 

 1   public partial class Form1 : Form 2   { 3     public Form1() 4     { 5       InitializeComponent(); 6     } 7     8     private void button1_Click(object sender, EventArgs e) 9     {10       //通过Form2的构造函数将Form1对象传递到Form2中11       Form2 form2 = new Form2(this);12       form2.Show();13     }14   }

 

 Form2的代码:

 1   public partial class Form2 : Form 2   { 3     //首先在Form2中定义Form1类型字段用来存储Form1对象 4     Form1 form1=null; 5     Random r = new Random(); 6     public Form2() 7     { 8       InitializeComponent(); 9     }10     public Form2(Form1 form):this()11     {12       //通过构造方法将Form1对象给Form2字段赋值13       form1 = form;14     }15     private void button1_Click(object sender, EventArgs e)16     {17       //随机改变Form1的背景颜色18       form1.BackColor = Color.FromArgb(r.Next(256),r.Next(256),r.Next(256));19     }20   }

 


示例2:Form1中有一个button、label,From2中有button、textBox。点击Form1中的按钮打开From2并在textBox中输入字符,

再点击Form2中的按钮将其输入的字符显示在Form1的label上。

Form1的代码:

 1   public partial class Form1 : Form 2   { 3     public Form1() 4     { 5       InitializeComponent(); 6     } 7  8     private void button1_Click(object sender, EventArgs e) 9     {10       Form2 form2 = new Form2(ShowMsg);11       form2.Show();12     }13 14     //将这个方法通过构造函数传递给Form215     public void ShowMsg(string msg)16     {17       label1.Text = msg;18     }19   }

 

Form2的代码:

 1   //在这里声明的委托需要与要传递的方法有相同的签名 2   public delegate void DelTest(string msg); 3  4   public partial class Form2 : Form 5   { 6     //声明委托字段用来存储Form1传来方法 7     public DelTest _del; 8     public Form2(DelTest del) 9     {10       _del = del;11     }12 13     private void button1_Click(object sender, EventArgs e)14     {15       //执行委托回传数据16       _del(textBox1.Text);17     }18   }