首页 > 代码库 > C# 两种窗体传值。

C# 两种窗体传值。

一、利用属性窗体传值。

其实,利用属性传值,原理就是,把窗体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 send12 {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 老咸出品| 

二、利用委托窗体传值。

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

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

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