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);
運行效果圖以下: