gpt4 book ai didi

c# - "e.Cancel "在关闭事件中

转载 作者:可可西里 更新时间:2023-11-01 08:30:28 25 4
gpt4 key购买 nike

当使用FormClosing事件时,为什么代码e.Cancel = true;有效,但是new CancelEventArgs().Cancel = true; 不起作用?

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;

new CancelEventArgs().Cancel = true;
}

最佳答案

该事件由 Winforms 管道代码引发。它可以看到自定义事件处理程序想要更改默认行为的唯一方法是通过 e 对象。创建新的 CancelEventArgs 对象没有管道可以检测到的副作用。

还有其他问题,事件是为了外部代码的利益而引发的,让它知道发生了什么,并为其提供改变行为的选项。这里没有外部代码,事件处理程序实际上是引发事件的同一个类的一部分。换句话说,窗体正在监听它自己的事件。有一个更好的方法来处理这个问题,您可以覆盖引发事件的方法。像这样:

    protected override void OnFormClosing(FormClosingEventArgs e) {
e.Cancel = true;
base.OnFormClosing(e);
}

现在外部代码可以覆盖默认行为,事件在 OnXxxx 方法运行后引发。您可以选择,如果您不希望外部代码覆盖该行为,只需交换这两个语句即可。

关于c# - "e.Cancel "在关闭事件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5142517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com