事件与委托

其实所谓的委托可以直接从字面上理解  就是将某个事件  委托给别人去处理。

关键字:delegate  创建委托   event 声明事件  

当调用事件时可以通过委托将该事件告知给各个处理函数。

主要步骤:

1.创建委托

public delegate void 委托名称(要传递的参数);

2.声明事件        

public event 委托名称 事件名称;

3.绑定方法

事件名称 += 方法名称1

事件名称+=方法名称2

...

注意:能添加至委托的方法必须  返回值类型和参数  与定义的委托相同。

4.触发事件

事件名称(对应参数);

注:这样所有的方法就都被执行了

例:

子窗体code:

1 using System;
2  using System.Collections.Generic;
3  using System.ComponentModel;
4  using System.Drawing;
5  using System.Data;
6  using System.Linq;
7  using System.Text;
8  using System.Windows.Forms;
9  using ClientCommonService;
10
11  namespace ClinicPatientRegistered
12 {
13 public partial class 号 别MapUserControl : UserControl
14 {
15 public delegate void Click科室选择(号别安排 str);
16 public event Click科室选择 科室选择通知;
17
18 public 号别MapUserControl()
19 {
20 InitializeComponent();
21 this.DoubleBuffered = true;
        
22 }
23
24 protected void button选择房间_Click(object sender, MouseEventArgs e)
25 {
26 if (科室选择通知 != null)
27 {
28 科室选择通知(room.号别安排);
29 }
30 }
31 }
32 }

父窗体code:

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;
using DevComponents.DotNetBar;
using ClientCommonService;

namespace ClinicPatientRegistered
{
public partial class 挂号服务ListForm : ChildForm
{
public 挂号服务ListForm()
{
InitializeComponent();
号别MapUserControl号表图.科室选择通 知
+= load加载科室信息;
}
public void load加载科室信息(号别安排 str)
{
MessageBox.Show(str.当前号.ToString());
}
}
}
posted @ 2011-05-02 11:34  怀恋-小军  阅读(194)  评论(0编辑  收藏  举报