2

我试图通过处理 FormClosing 来防止表单关闭。

if(e.CloseReason == CloseReason.UserClosing)
{
    e.Cancel = true;
    SomeFunction();
}

但是,当它进入 SomeFunction() 时,会引发 stackoverflow 异常。这可能是什么原因?谢谢。


编辑:

哎呀,我不调试不好。SomeFunction() 中有一些字段验证,当字段有效时,我调用表单的 Close() 函数。由于我对 FormClosing() 进行了处理,因此它将在 SomeFunction() 中再次处理。不知道调用Close()函数也在CloseReason.UserClosing下。感谢您的回答。

4

1 回答 1

1

堆栈溢出的常见原因是无限递归。

您应该检查SomeFunction()不会导致SomeFunction()再次调用(可能通过触发您正在处理的事件。

您可以检查调试器中的调用堆栈以查看是否是这种情况(根据上面的注释)。

于 2013-01-30T01:48:28.567 回答