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);
}
}
}