winforms - 让调试器中断下一个事件

标签 winforms visual-studio-2017 visual-studio-debugging

在 Visual Basic 6.0 IDE 中,可以中断正在运行的空闲程序(等待 UI 线程上的事件),然后按 F8(单步执行)。之后,任何点击、鼠标悬停或其他导致代码发生的事件都会导致调试器在要执行的下一行代码处中断,这将是事件处理程序中的第一行代码。例如,如果您显示一个带有确定按钮的数据输入表单,您可以在空闲时打破该表单,按 F8,然后单击确定按钮。然后调试器会突出显示 cmdOK_Click 事件处理程序中的第一行代码。

有没有办法在 Visual Studio 2017 中使用 C# Winforms 项目执行上述操作?我在 SO 上看到过类似的帖子,指示中断所有 (Ctrl-Alt-Break),然后按 F11(进入),然后单击表单上的按钮。但这是行不通的。当我按下 F11 时,程序返回运行模式并处理事件,而不会导致 IDE 中断并显示事件后要执行的第一行。

请注意,在 VB6 IDE 中,当您中断程序然后按 F8 任何之后触发并导致事件处理程序的事件将导致 IDE 中断。我正在寻找 VS 2017 IDE 和 C# Winforms 程序的类似行为。

注意:请不要建议进入每个偶数处理程序并在代码的第一行设置断点——考虑到一个复杂的程序可能包含数千个事件处理程序,因此设置断点每一个都不是一个实用(或优雅)的解决方案。

最佳答案

F10(Step Over)和 F11(Step Into)都提供了所需的行为,但如果Enable Just My Code选项打开:

enter image description here

关于winforms - 让调试器中断下一个事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47912623/

相关文章:

c# - 在后台工作程序中向 GUI 添加控件

c# - HasMorePages 不工作。设置该位会导致在同一页上打印所有项目

asp.net - 是否有宏/扩展将 Visual Studio 中的所有 Web 项目设置为 "Don' t 打开页面”?

c# - 哪种调用 Form.ShowDialog() 的方法更好?

c# - 如何使 RichTextBox 具有平面外观?

asp.net-web-api - Azure Service Fabric SDK 2.6.210 在 Visual Studio 2017 上缺少无状态 Web API 模板?

automation - 以编程方式向 Visual Studio 2017 的 "External tools"菜单添加一个条目

c++ - 在 Visual Studio 解决方案中设置所有项目的运行时库

iis - 调试Azure : Error attaching the debugger to the IIS worker process

从 Windows 而不是从 Visual Studio 运行时,C#/C++ 应用程序崩溃