我知道在C#中,有几个内置事件传递参数("取消"),如果设置为true,将停止在引发事件的对象中进一步执行.
如何实现一个事件,其中提升对象能够跟踪EventArgs中的属性?
这是我想要做的WinForms示例:
http://msdn.microsoft.com/en-us/library/system.componentmodel.canceleventargs.cancel.aspx
谢谢.
Jon*_*gel 16
这真的很容易.
private event _myEvent;
// ...
// Create the event args
CancelEventArgs args = new CancelEventArgs();
// Fire the event
_myEvent.DynamicInvoke(new object[] { this, args });
// Check the result when the event handler returns
if (args.Cancel)
{
// ...
}Run Code Online (Sandbox Code Playgroud)
小智 14
一旦其中一个断言取消,我就避免调用其他订阅者的方式:
var tmp = AutoBalanceTriggered;
if (tmp != null)
{
var args = new CancelEventArgs();
foreach (EventHandler<CancelEventArgs> t in tmp.GetInvocationList())
{
t(this, args);
if (args.Cancel) // a client cancelled the operation
{
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)