Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何取消winforms中的任何事件?_C#_.net_Winforms_Event Handling - Fatal编程技术网

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

C# 如何取消winforms中的任何事件?,c#,.net,winforms,event-handling,C#,.net,Winforms,Event Handling,我想取消该功能范围内的事件 我按下了“单击事件”按钮,在错误验证时,我想取消此事件。同样,我也想取消其他活动 如何在C#中实现这一点取决于场景;在大多数情况下:与其取消事件,不如什么都不做,例如: private void SaveDataClicked(object sender, EventArgs args) { if(!ValidateData()) return; // [snip: code that does stuff] } 或: 有些事件公开了CancelEv

我想取消该功能范围内的事件

我按下了“单击事件”按钮,在错误验证时,我想取消此事件。同样,我也想取消其他活动


如何在C#

中实现这一点取决于场景;在大多数情况下:与其取消事件,不如什么都不做,例如:

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

有些事件公开了
CancelEventArgs
(或类似事件),允许通过
args
-表单关闭来取消某些外部行为,这是最明显的例子(设置
e.cancel=true;


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

@Marc:Thx用于提供有用的知识。我对这两种情况都进行了计算。这仅在cancelButton_Click和okButton_Click中不起作用,因为它们有关闭对话框的副作用。但是,是的,对于任何不自动设置DialogResult的按钮,这是最简单的。遗憾的是,EventArgs没有.Cancel属性。也不是私人财产。因此,您将需要一种不同类型的EventArgs,例如RoutedEventArgs。
private void SaveDataClicked(object sender, EventArgs args)
 {
   args.cancel = true;
 }
private void SaveDataClicked(object sender, EventArgs args)
 {
   args.cancel = true;
 }