form1是用来接收值的
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namespace DelegateEventDemo 12 { 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 Form2 f2 = new Form2(); 20 private void Form1_Load(object sender, EventArgs e) 21 { 22 this.Text = "接收值"; 23 f2.DelegateEvent += new Form2.DelegateMessage(GetText); 24 } 25 private void GetText(string msg) 26 { 27 this.textBox1.Text = msg; 28 } 29 30 private void button1_Click(object sender, EventArgs e) 31 { 32 f2.Show(); 33 } 34 } 35 }
form2是发送值的
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namespace DelegateEventDemo 12 { 13 public partial class Form2 : Form 14 { 15 public Form2() 16 { 17 InitializeComponent(); 18 } 19 20 public delegate void DelegateMessage(string txt);//声明一个委托 21 public event DelegateMessage DelegateEvent;//声明委事件 22 23 24 private void Form2_Load(object sender, EventArgs e) 25 { 26 this.Text = "传值窗体"; 27 } 28 29 private void button1_Click(object sender, EventArgs e) 30 { 31 DelegateEvent(this.textBox1.Text); 32 } 33 } 34 }
1.委托是把方法当做参数一样使用
a)委托(int a,int b)
方法(int a,int b)
{
return a+b;
}
委托 委托对象=new 委托(方法名);
int sum=委托对象(5,3);
结果 sum=8;