Winforms 如何确定WinForm应用程序中的哪个窗体、事件或方法';正在运行以调试

Winforms 如何确定WinForm应用程序中的哪个窗体、事件或方法';正在运行以调试,winforms,visual-studio,Winforms,Visual Studio,这个场景以前就出现过,我想知道是否有任何方法可以确定活动运行的表单在代码中的执行位置?问题是,当我继承了一个我还不完全熟悉的非常大的应用程序,并且它在VS.NET2010中运行时。我可能会有一个特定的屏幕,然后说“天哪,如果我能在执行“x”时开始调试,那就太好了” 如果这是一个带有一些按钮的简单表单,我甚至不会在这里麻烦地询问;我不是那个新手。但耗时的任务是,当我在一个具有拖放功能、右键单击选项等的大型多项目解决方案中查看选项卡式屏幕时,我必须花5-10分钟跟踪断点的位置以进行调试 我想知道的是

这个场景以前就出现过,我想知道是否有任何方法可以确定活动运行的表单在代码中的执行位置?问题是,当我继承了一个我还不完全熟悉的非常大的应用程序,并且它在VS.NET2010中运行时。我可能会有一个特定的屏幕,然后说“天哪,如果我能在执行“x”时开始调试,那就太好了”

如果这是一个带有一些按钮的简单表单,我甚至不会在这里麻烦地询问;我不是那个新手。但耗时的任务是,当我在一个具有拖放功能、右键单击选项等的大型多项目解决方案中查看选项卡式屏幕时,我必须花5-10分钟跟踪断点的位置以进行调试

我想知道的是,是否有一种方法可以让WinForms应用程序通过IDE运行,并在下一个操作中告诉VS.NET如何进入代码(显然没有断点,因为我还不知道在哪里放置断点)。这将节省我大量的时间来追踪哪一个事件是以一种不那么简单的形式或一系列形式发生的

我希望这是有意义的


谢谢

是的,这是有可能的。当您使用Debug+breakall时,99.9%的几率是您没有将代码分解为项目的一部分。Winforms应用程序通常处于空闲状态,它会发送消息循环并等待Windows告诉它发生了什么。您将在Application.Run()语句处中断

然后使用Debug+跳过的技巧。程序恢复正常运行。然后给出一个UI命令(问题中的do'x'),调试器将在实际代码的第一个语句处中断,通常是在该命令的事件处理程序的开始处。并不能确切地保证该代码是相关的,例如,您可能会在MouseMove事件处理程序中中断。所以YMMV。

太好了,这正是我想要的!在我的场景中有一个警告。它不是在“Application.Run”上中断,而是在每隔10秒运行一次的BackgroundWorker线程上停止。不幸的是,“Debug+Step-Over”(F10)命令只会在该方法中停止,不管我做了什么UI操作。解决方案:暂时停止后台工作程序功能,然后您的步骤完全按照我的需要工作。在5秒钟内深入了解了一些DragEnter事件,我至少需要5分钟才能找到。5分钟+5分钟+5分钟,加起来!