我在面向 .NET Framework 3.5 的 Visual Studio 2010 中使用 VB.NET。
在我们的(相当大的)客户端应用程序中,有一个表单(Windows Forms)我们遇到了问题。它使用 .ShowDialog 显示(它不是使用 .ShowDialog 显示的唯一表单)。表单上有 Close 和 Cancel 按钮,Enter 键和 Escape 键分别与这些控件相关联(在其他表单上也是如此)。按钮中的代码执行一个 Hide 方法调用以使表单不可见(它实际上是稍后在业务流程逻辑中卸载的),我们再次在其他地方使用其他表单执行此操作。
单击关闭或取消按钮可按需要工作。按下该Enter键也可以根据需要工作(运行关闭单击)。但是当按下 Escape 键时,首先运行 Cancel 按钮逻辑,正如预期的那样,但随后我们收到一个 Form Closed 事件,并且表单被卸载!
没有代码在其他地方寻找 Escape 键并在表单上执行 Close。我们尝试在 Closing 事件中设置 Cancel 参数,但无济于事 - 表单仍在卸载。我们还断开了 Escape 键与 Cancel 按钮的连接,按下 Escape 然后不会运行 Cancel 代码(如预期的那样),但 Form Closed 事件仍然会触发。
我无法在测试程序中复制这种行为,所以很遗憾我不能发布一个工作(实际上不工作)的代码示例。
关于发生了什么的任何输入?为什么 Escape 键关闭表单?
也许最重要的是,我需要做些什么来进一步调查并弄清楚呢?