我处于一种奇怪的情况,我意识到如果在我的代码上设置断点,那么它将被触发,否则永远不会调用该方法。我的问题是;如何设置断点来改变 C# 代码与 WinForms 应用程序交互的方式?
罪魁祸首似乎是ScrollableControl.ScrollControlIntoView Method。我已经将 Flowlayoutpanel 的 autoScroll 属性设置为true,并且垂直滚动条是可见的,但它仍然没有区别。
我处于一种奇怪的情况,我意识到如果在我的代码上设置断点,那么它将被触发,否则永远不会调用该方法。我的问题是;如何设置断点来改变 C# 代码与 WinForms 应用程序交互的方式?
罪魁祸首似乎是ScrollableControl.ScrollControlIntoView Method。我已经将 Flowlayoutpanel 的 autoScroll 属性设置为true,并且垂直滚动条是可见的,但它仍然没有区别。
调用堆栈会很明显。不得不猜测:是的,调试器肯定会影响 GUI 代码。通过设置断点尤其如此。这是焦点从您的窗口更改为 Visual Studio 主窗口的副作用。然后回来。这会影响订阅窗口的 De/Activated 事件、Got/LostFocus 事件以及任何涉及绘画的代码(如果 VS 与您的窗口重叠)。
在调试依赖于这些事件的 GUI 代码时,这肯定会妨碍。在极端情况下,您可能需要在另一台机器上设置远程调试器,以便在调试时不会发生这种焦点切换。
ScrollControlIntoView() 也是相关联的。这通常在控件获得焦点时自动发生。这大致回答了您的问题,但很难看出它对实际解决您的问题有何用处。请务必查看调用堆栈以获得更多信息。
这取决于此代码的确切位置。如果它在某种事件处理方法中(比如调整大小),或者说,绘画方法,它可能会改变你的应用程序的行为。
这就是为什么程序员的现代桌面 应该有 2 个监视器,在一个监视器上运行应用程序,在另一个监视器上设置断点。但即使在这种情况下,你也会遇到一些问题。
因此,如果断点在以前提到的地方,简单的日志记录通常是更适合这种调试的解决方案。