djc*_*uch 1 c# events event-handling
假设我有一个活动.我们称之为DoStuff.在DoStuff发生之前,我正在尝试使用另一个事件PreviewDoStuff来检查是否需要阻止调用DoStuff.我面临的问题是我无法从PreviewDoStuff中获得任何价值,如返回代码或由于事件的编写方式.并且事件args不会传递回调用者,因此我无法获得事件args"处理"属性.我确信必须有办法,但我不知道如何做.有任何想法吗?
谢谢!
将事件声明为EventHandler<CancelEventArgs>
.然后,侦听器可以将Cancel设置为true,您可以使用该值来确定是否引发"真实"事件.
强制代码示例:
public event EventHandler<CancelEventArgs> PreviewDoStuff;
public event EventHandler DoStuff;
private void RaiseDoStuff()
{
CancelEventArgs args = new CancelEventArgs();
OnPreviewDoStuff(args);
if (!args.Cancel)
{
OnDoStuff(EventArgs.Empty);
}
}
protected void OnPreviewDoStuff(CancelEventArgs e)
{
EventHandler<CancelEventArgs> previewDoStuff = PreviewDoStuff;
if (previewDoStuff != null)
{
previewDoStuff(this, e);
}
}
protected void OnDoStuff(EventArgs e)
{
EventHandler doStuff = DoStuff;
if (doStuff != null)
{
doStuff(this, e);
}
}
Run Code Online (Sandbox Code Playgroud)
有关实际使用中的此示例,请检查FormClosing事件,该事件使用FormClosingEventArgs类,该类继承自CancelEventArgs.
归档时间: |
|
查看次数: |
739 次 |
最近记录: |