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;
}