委托入门

故事:老大和老三的故事
大学宿舍老大有女朋友,老三木有。有一天,老三准备外出逛逛,老大在床上喊老三:"老三,顺便帮我买两张电影票,我要和女友一起看"。苦逼的老三吭哧吭哧帮老大买电影票 去了。老大委托老三买电影票,这就是委托。也许你会问为什么老大不直接去买呢?因为老大要泡妞没时间。那么,老三得买什么类型的电影票呢?是《致青春》还是《中国合伙 人》?这得老大说了算。老大那边提供了具体买电影票的方法,但老大自己不动手,真正执行买电影票的是苦逼的老三,故事未完待续......

需求:
要求:使用委托、事件
目标:在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     }
View Code

窗体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     }
View Code

总结:整个过程就是A窗体通过委托回调B窗体的方法。

posted @ 2013-05-30 17:43  三当家  阅读(193)  评论(0)    收藏  举报