文章目录
C# 委托和事件
应用场景:当双击列表中某条数据时,刷新左侧基本信息,技术实现主要以事件和委托,请看源码案例!
以上面的图片为案例,实现功能
1. 定义事件
在右侧列表类里定义一个事件
//1. 自定义事件 //定义委托 public delegate void CaseChangedEventHandler(object sender, int caseId); //定义委托类型的事件 public event CaseChangedEventHandler SelectedChangedOfcaseId;
2. 触发事件
选择列表行触发事件(右侧列表类)
//2. 给列表绑定doubleClick双击事件,双击时触发该事件 private void gridControl_病理列表_DoubleClick(object sender, EventArgs e) { SelectedChangedEvent(); }
2.1 发布事件
触发事件后,调用该方法(右侧列表类)
private void SelectedChangedEvent() { int[] rows = gridView_病理列表.GetSelectedRows(); string Id = this.gridView_病理列表.GetRowCellValue(rows[0], "Id").ToString(); if (Id != null) { 当前病理id = Convert.ToInt32(Id); if (SelectedChangedOfcaseId != null) { SelectedChangedOfcaseId(this, 当前病理id); } } }
2.2 接收触发事件
接收触发事件(右侧列表类)
// this.gridControl_病理列表.DoubleClick += new System.EventHandler(this.gridControl_病理列表_DoubleClick
2.3 绑定事件
事件已经执行后,进行渲染刷选当前选中患者的基本信息(左侧基本信息类)
//接下来就是基本信息那边 哪里调用列表让它绑定一下这个事件 病理列表1UserControl.SelectedChangedOfcaseId += new Pathology.Component.病理_列表1_UserControl.CaseChangedEventHandler(病理_列表1_UserControl1_SelectedChanged);
3. 渲染
触发事件进行重新加载渲染(查询)(左侧基本信息类)
private void 病理_列表1_UserControl1_SelectedChanged(object sender, int caseId) { if (this.当前病理id == caseId) { //MessageBox.Show("当前病理id与列表选择的caseId相同:" + caseId); } else { //MessageBox.Show("列表选择了caseId:" + caseId); this.当前病理id = caseId;//赋值当前病理id //重新加载渲染当前组件界面值 if (病理概览UserControl!=null) { 病理概览UserControl.显示病理概览(当前病理id); } if (细胞病理基本信息UserControl!=null) { 细胞病理基本信息UserControl.加载渲染(当前病理id); } } }