委托:我的理解是让其它窗体执行你实例的事件。
先定义 A B 两个界面
在 B 中 声明一个委托方法 public delegate void 委托名称(); 定义在类的外边,当然里面可以传参数
在 B 类声明 委托事件 public event 委托名称 事件名称; //说明 event 代表事件
假如:B 中 有 一个方法 用到委托 :写法:
if(事件名称 != null ) //判断委托不等于null
{
事件名称() ; //执行委托方法
}
上面是 B 界面的写法。 那么 一下是A界面的写法:
先定义 委托事件在 A 的 load 里面 : B.事件名称 += 事件名称方法();
A 的方法 为 事件名称方法();
事件名称方法()
{
//你要执行的内容
}
-------------------------以上是理解描述,下面是代码:------------------------------------------------------------------------
namespace UI.ControlEx // B 窗体
{
//定义委托
public delegate void CustomerCardChanged();
public partial class CustomerUC : DevExpress.XtraEditors.XtraUserControl
{
//定义委托事件
public event CustomerCardChanged CustomerCardChangedEvent;
private void CustomerUC_Load(object sender, EventArgs e)
{
if (CustomerCardChangedEvent != null)
{
//执行该事件
CustomerCardChangedEvent();
}
}
}
}
namespace UI.Business // A 窗体
{
public partial class OrderDocForm : Main.DocForm
{
private void SalesOrderDocForm_Load(object sender, EventArgs e)
{
//实例 B 窗体的委托 事件
_CustomerUC.CustomerCardChangedEvent += _CustomerUC_CustomerCardChangedEvent;
}
// 执行的方法
private void _CustomerUC_CustomerCardChangedEvent()
{
Message.Show("你好");
}
}
}
总结:B 窗体的委托,可以在任何窗体中被调用,而B窗体只需要执行委托方法,所有调用到B的委托都被执行。
功能类似于:C 窗体中有公开的方法 CC(),D 窗体中有公开的方法 DD(),而 B 窗体需要用到 CC()和DD()这两个方法,
B至少要写2句代码,C.CC(); D.DD()。
而委托,无论你有多少个窗体,需要调用,我B窗体仅需要写 一句 委托方法(); 只需要在其它窗体中调用B窗体的委托 事件即可。