事件一步一步来写
- 定义事件参数
public class CustomArgs:EventArgs
{
......
}
- 定义委托
public delegate void CustomEventHandler(object sender,CustomArgs e)
- 声明事件
public class Custom
{
public event CustomEventHandler CustomEvent;
}
- 定义触发事件
public class Custom
{
public event CustomEventHandler CustomEvent;
protected void OnCustomEvent(CustomArgs e)
{
if(CustomEvent!=null)
{
CustomEvent(this,e);
}
}
public void TriggerMethod()
{
var eventArgs= new CustomArgs();
if(customEvent!=null)
{
CustomEvent(this,eventArgs);
}
}
}
- 调用方式
var custom = new Custom();
custom.CustomEvent+=new CustomEventHandler(
(o,e)=>{
.......
});
- 更快的写法
public class Custom
{
public event CustomEventHandler CustomEvent;
protected void OnCustomEvent(CustomArgs e)
{
if(CustomEvent!=null)
{
CustomEvent(this,e);
}
}
}
public class Custom
{
public event EventHandler<CustomArgs> CustomEvent; //这种是快速处理的方式,这种方式就不用再定义委托了
protected void OnCustomEvent(CustomArgs e)
{
if(CustomEvent!=null)
{
CustomEvent(this,e);
}
}
public void TriggerMethod()
{
var eventArgs= new CustomArgs();
if(customEvent!=null)
{
CustomEvent(this,eventArgs);
}
}
}
- 直接高效的写法
//定义委托
public delegate void CustomEventHandler(string key,CustomerModel model)
private readonly object CustomeEvent = new object();// 自定义事件
private EventHandlerList events = new EventHandlerList();
public event CustomEventHandler CustomHandlerTirgger
{
add {events .AddHandler(CustomeEvent ,value);}
remove{events.RemoveHandler(CustomeEvent ,value);}
}
protected virtual void RaiseCustomHandlerTirgger(string key,CustomerModel model)
{
CustomEventHandler eventDelegate = (CustomEventHandler)events[CustomeEvent];
if(eventDelegate !=null) eventDelegate (key,model);
}