C# Winforms应用程序中的按键导致窗口意外关闭

C# Winforms应用程序中的按键导致窗口意外关闭,c#,.net,vb.net,winforms,C#,.net,Vb.net,Winforms,我最近遇到了一个奇怪的问题: 每当我在应用程序中以任何形式向文本框中输入文本(即使是单个字符)时,都会导致窗体及其父级关闭。到目前为止,我已经检查了以下内容: 可能将击键解释为窗体取消的错误/错误分配的事件处理程序 我在几个窗口中使用keypreview,但调试表明这不是原因 发生在任何形式的应用程序中 即使在表单上放置全新的文本框时也会发生这种情况 已尝试从文本框声明(VB.NET)中删除WithEvents声明 结果是DialogResult。当我在Show或ShowDialog之后中断代

我最近遇到了一个奇怪的问题:

每当我在应用程序中以任何形式向文本框中输入文本(即使是单个字符)时,都会导致窗体及其父级关闭。到目前为止,我已经检查了以下内容:

  • 可能将击键解释为窗体取消的错误/错误分配的事件处理程序
  • 我在几个窗口中使用keypreview,但调试表明这不是原因
  • 发生在任何形式的应用程序中
  • 即使在表单上放置全新的文本框时也会发生这种情况
  • 已尝试从文本框声明(VB.NET)中删除WithEvents声明
  • 结果是DialogResult。当我在Show或ShowDialog之后中断代码时取消
  • 表单不使用AcceptButton或CancelButton属性(设置为无)
  • 注意:我正在修改一个很大的代码库,其中有很多代码我还没有接触过
还有什么可能导致这种奇怪的行为?

  • 按Ctrl+D,E(调试,异常)并告诉VisualStudio在抛出任何异常时中断,然后查看是否有任何异常在工作

  • 按Ctrl+D,N(Debug,New Breakpoint,Break at Function)并在
    System.Windows.Form.OnClosing
    上设置断点,然后查看调用堆栈。(或者,在主窗体中重写
    OnClosing
    ,然后在其中设置断点)

      • 按Ctrl+D,E(调试,异常)并告诉VisualStudio在抛出任何异常时中断,然后查看是否有任何异常在工作

      • 按Ctrl+D,N(Debug,New Breakpoint,Break at Function)并在
        System.Windows.Form.OnClosing
        上设置断点,然后查看调用堆栈。(或者,在主窗体中重写
        OnClosing
        ,然后在其中设置断点)


      按钮的对话框结果被意外设置为“取消”。在更改回默认值“无”后,问题得到解决。这是我的故事。

      按钮的对话框结果被意外设置为“取消”。更改回默认值“无”后,问题就解决了。这是我的故事。

      只是一个镜头,但我会尝试连接一个FormClosing事件并在那里设置断点。你可以查看堆栈跟踪,看看你是如何到达那里的。迈克:你说得对。把你的评论变成答案,我会投你一票。Slaks已经拿到了复选标记。只是一次机会,但我会尝试连接一个FormClosing事件并在那里放置一个断点。你可以查看堆栈跟踪,看看你是如何到达那里的。迈克:你说得对。把你的评论变成答案,我会投你一票。Slaks已经打上了对勾。是的。在我发布这个问题后,我实际上也有同样的想法。打断表单关闭处理程序使我能够看到足够多的调用堆栈,以识别一个计时器,该计时器正在检查应用程序游标的状态,并使用goto来出错,当游标为null时,它将静默地关闭应用程序。我想知道鲁布·戈德堡的这项发明流传了多远。仍然不确定文本更改到底会对消息队列产生多大的影响…是的。在我发布这个问题后,我实际上也有同样的想法。打断表单关闭处理程序使我能够看到足够多的调用堆栈,以识别一个计时器,该计时器正在检查应用程序游标的状态,并使用goto来出错,当游标为null时,它将静默地关闭应用程序。我想知道鲁布·戈德堡的这项发明流传了多远。仍然不确定文本更改到底会对消息队列产生多大的影响。。。