C# 两种窗体传值。

一、利用属性窗体传值。

其实,利用属性传值,原理就是,把窗体Form1(父)和窗体Form2(子)当作两个类。在窗体Form1中new出Form2的新实例之后,通过给Form2窗体定义一个属性来提供一个供Form1调用的接口,说明白了就是,Form2里边有一个“东东(属性)”,是被设置为共有的,在其他类(父类)中新创建了Form2类的新实例后,可以通过Form2的新实例的这个"东东(属性)"(注意当前是在其他类窗体(父类),不是在Form2),来传递Form2的某个控件的值。下面结合代码可能会好理解一点:

首先,在Form1里添加一个button和一个label,在Form2里添加一个TextBox和一个button。代码如下:

C# 两种窗体传值。
 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 /////////////////////////////////////////////////////////////////////////////
View Code

至此,利用属性进行窗体传值的方法就结束了。如果想要进一步了解什么是属性的话,可以参考我的另一篇拙文:

|博客园:http://www.cnblogs.com/gu-zhan/p/4122045.html 老咸出品| 

二、利用委托窗体传值。

 说实话,其实委托,就是把一个函数作为另一个函数的参数进行传递。

利用委托进行窗体传值,下面看代码介绍:

C# 两种窗体传值。
 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);
View Code

这里我们讲一下思路,其实委托传值,就是在Form1中写一个函数,通过创建Form2的新实例的时候,把这个函数通过Form2的构造函数初始化了一遍。

而在Form2中,定义了一个委托实例来接收Form1中,new Form2()的时候,传递进来的那个函数。最后可以理解为,委托实例"_del"就是等于Form1中的"send()"函数,所以可以看到Button事件里是这样的,_del(textBox1.Text);

希望看到这篇文章的人可以把代码敲一遍,你可以先看看最终是否运行成功,得到你所想要的结果,但是最后一定要敲敲敲敲敲...嘻嘻(*^__^*) 。

转载请注明 博客园 :http://www.cnblogs.com/gu-zhan/ 老咸出品

C# 两种窗体传值。

上一篇:window.event.keycode值大全


下一篇:【随笔】Win7下GVIM的安装与配置