委托入门
故事:老大和老三的故事
大学宿舍老大有女朋友,老三木有。有一天,老三准备外出逛逛,老大在床上喊老三:"老三,顺便帮我买两张电影票,我要和女友一起看"。苦逼的老三吭哧吭哧帮老大买电影票
去了。老大委托老三买电影票,这就是委托。也许你会问为什么老大不直接去买呢?因为老大要泡妞没时间。那么,老三得买什么类型的电影票呢?是《致青春》还是《中国合伙
人》?这得老大说了算。老大那边提供了具体买电影票的方法,但老大自己不动手,真正执行买电影票的是苦逼的老三,故事未完待续......
需求:
要求:使用委托、事件
目标:在A窗体中点击按钮改变B窗体的标题
理解:B窗体委托A窗体改变自己的标题
分析:
1.窗体的显示顺序:首先我们要看一下B窗体的标题是什么,因此首先显示B窗体,在B窗体添加按钮显示A窗体。
2.改变B窗体的标题,我们定义一个ChangeTitle(string Title)来改变B窗体标题,那么,这个ChangeTitle放在哪里呢?当然是B窗体了。
3.在A窗体中定义委托,事件,以及触发该事件的时机。
先看效果:



窗体A code:
1 public delegate void ChangeFormTitle(string title); 2 3 public partial class A : Form 4 { 5 public event ChangeFormTitle changeEventHandle; 6 7 public A() 8 { 9 InitializeComponent(); 10 } 11 12 private void button1_Click(object sender, EventArgs e) 13 { 14 if (changeEventHandle != null) 15 { 16 changeEventHandle(titleTextBox.Text); 17 } 18 } 19 }
窗体B code:
1 public partial class B : Form 2 { 3 public B() 4 { 5 InitializeComponent(); 6 } 7 8 private void button1_Click(object sender, EventArgs e) 9 { 10 A a = new A(); 11 a.changeEventHandle += new ChangeFormTitle(ChangeTitle); 12 a.ShowDialog(); 13 } 14 15 public void ChangeTitle(string name) 16 { 17 this.Text = name; 18 } 19 }
总结:整个过程就是A窗体通过委托回调B窗体的方法。
作者:三当家
出处:http://www.cnblogs.com/the-three/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号