解决方法
这取决于场景;在大多数情况下:不是取消事件,而是什么也不做,例如:
private void SaveDataClicked(object sender,EventArgs args) { if(!ValidateData()) return; // [snip: code that does stuff] }
要么:
private void SaveDataClicked(object sender,EventArgs args) { if(ValidateData()) { // [snip: code that does stuff] } }
有一些事件暴露了一个CancelEventArgs(或类似的),允许通过args取消一些外部行为 – 形式关闭是最明显的例子(设置e.Cancel = true;).
请注意,在这种情况下,我不会在按钮上有自动对话框结果;当(如果)处理程序成功完成时手动应用.