一、利用属性窗体传值。
其实,利用属性传值,原理就是,把窗体Form1(父)和窗体Form2(子)当作两个类。在窗体Form1中new出Form2的新实例之后,通过给Form2窗体定义一个属性来提供一个供Form1调用的接口,说明白了就是,Form2里边有一个“东东(属性)”,是被设置为共有的,在其他类(父类)中新创建了Form2类的新实例后,可以通过Form2的新实例的这个"东东(属性)"(注意当前是在其他类窗体(父类),不是在Form2),来传递Form2的某个控件的值。下面结合代码可能会好理解一点:
首先,在Form1里添加一个button和一个label,在Form2里添加一个TextBox和一个button。代码如下:
1 ///////////////////////////////////////////////////////////////////////////// 2 //Form1: Button事件。 3 Form2 frm2 = new Form2(); 4 frm2.ShowDialog(); //此处注意与frm2.Show()的区别。 5 if(frm2.DialogReasult == DialogReasult.OK)//判断子窗体是否确定关闭。 6 { 7 label1.Text = frm2.send;//调用Form2新实例的属性。 8 } 9 10 //Form2 定义一个属性,用于传值 11 public string send 12 { 13 get{ return textBox1.Text}; 14 } 15 //Form2 Button事件。 16 this.DialogReasult == DialogReasult.OK 17 /////////////////////////////////////////////////////////////////////////////
至此,利用属性进行窗体传值的方法就结束了。如果想要进一步了解什么是属性的话,可以参考我的另一篇拙文:
|博客园:http://www.cnblogs.com/gu-zhan/p/4122045.html 老咸出品|
二、利用委托窗体传值。
说实话,其实委托,就是把一个函数作为另一个函数的参数进行传递。
利用委托进行窗体传值,下面看代码介绍:
1 /////////////////////////////////////////////////////////// 2 //Form1:Button事件 3 Form2 frm2 = new Form2(send); 4 //new Form2(),这个Form2其实可以看作一个构造函数,我们这里仅仅是把send()这个函数通过构造函数初始化了实例frm2. 5 frm2.Show();//可区别上面那个例子,与ShowDialog()的区别 6 7 //自定义一个函数 8 public void send(string str) 9 { 10 label1.Text = str; 11 } 12 13 //Form2: 14 //先声明一个委托,可放在类之外。 15 public delegate void Mydel(string str); 16 //声明一个委托的新实例。 17 public Mydel _del; 18 //重写一下构造函数 19 public Form2(Mydel del) 20 { 21 _del = del; 22 InitializeComponent(); 23 } 24 25 //Button事件: 26 _del(textBox1.Text);
这里我们讲一下思路,其实委托传值,就是在Form1中写一个函数,通过创建Form2的新实例的时候,把这个函数通过Form2的构造函数初始化了一遍。
而在Form2中,定义了一个委托实例来接收Form1中,new Form2()的时候,传递进来的那个函数。最后可以理解为,委托实例"_del"就是等于Form1中的"send()"函数,所以可以看到Button事件里是这样的,_del(textBox1.Text);
希望看到这篇文章的人可以把代码敲一遍,你可以先看看最终是否运行成功,得到你所想要的结果,但是最后一定要敲敲敲敲敲...嘻嘻(*^__^*) 。
转载请注明 博客园 :http://www.cnblogs.com/gu-zhan/ 老咸出品