如何取消winforms中的任何事件?

Sha*_*pta 7 .net c# event-handling winforms

我想从该函数范围内取消一个事件.

例如.我按下了按钮点击事件,在错误验证时,我想取消此事件.同样我也想取消其他活动.

我怎么能在C#中做到这一点

Mar*_*ell 7

这取决于场景; 在大多数情况下:不是取消事件,而是什么也不做,例如:

private void SaveDataClicked(object sender, EventArgs args) {
    if(!ValidateData()) return;
    // [snip: code that does stuff]
}
Run Code Online (Sandbox Code Playgroud)

要么:

private void SaveDataClicked(object sender, EventArgs args) {
    if(ValidateData()) {
        // [snip: code that does stuff]
    }
}
Run Code Online (Sandbox Code Playgroud)

有一些事件暴露了一个CancelEventArgs(或类似的),允许通过- 形式关闭取消一些外部行为args是最明显的例子(集e.Cancel = true;).

请注意,在这种情况下,我不会在按钮上有自动对话框结果; 当(如果)处理程序成功完成时手动应用.