事件与委托
其实所谓的委托可以直接从字面上理解 就是将某个事件 委托给别人去处理。
关键字: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());
}
}
}