A、网上有不少方法,你们可搜一下,均可用。ide
B、这里只是说明下是只利用委托,学习基本的委托运用。函数
方法以下:学习
一、C#创建一个默认工程,默认窗体Form1this
二、加入一个新窗体,默认Form2spa
三、Form1窗体上放一个Label,一个Button,属性分别为:.net
this.label1.Text = ""; // 清空label的值设计
this.button1.Text="otherForm"; //设置button显示为otherFormcode
protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.label1.Text = ""; this.button1.Text = "otherForm"; }
四、Form2窗体上放一个textbox1,一个Button,属性分别为:orm
this.textbox1.Text = ""; //清空textbox的值blog
this.button1.Text = "input"; //设置button显示为input(输入)
protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.textBox1.Text = ""; this.button1.Text = "input"; }
五、上面的步骤就创建了两个基本的窗体,接下来回到Form1的代码设计视图
拷贝下面代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.label1.Text = ""; this.button1.Text = "otherForm"; } private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); returnValueEvent += new returnValue(Form1_returnValueEvent); frm2.Show(); } void Form1_returnValueEvent(string str) { // throw new NotImplementedException(); this.label1.Text = str; } // 定义委托 public delegate void returnValue(string str); // 委托的事件 public static event returnValue returnValueEvent; // 委托的事件的函数 public void doReturnValue(string str) { returnValueEvent(str); } } }
六、在Form2的代码设计视图中,拷贝下面代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form2 : Form { public Form2() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.textBox1.Text = ""; this.button1.Text = "input"; } private void button1_Click(object sender, EventArgs e) { Form1 frm1 = new Form1(); frm1.doReturnValue(this.textBox1.Text); } } }
七、运行后,就能够在两个窗体间传递参数了
注:重点是第六步中的,对委托的定义和调用
returnValueEvent += new returnValue(Form1_returnValueEvent);
void Form1_returnValueEvent(string str)
{
// throw new NotImplementedException();
this.label1.Text = str;
}
// 定义委托
public delegate void returnValue(string str);
// 委托的事件
public static event returnValue returnValueEvent;
// 委托的事件的函数
public void doReturnValue(string str)
{
returnValueEvent(str);
}
在Form2中的调用,在按钮的click事件中
Form1 frm1 = new Form1();
frm1.doReturnValue(this.textBox1.Text);
运行效果图以下: