C#断点改变行为

时间:2013-01-23 12:16:06

标签: c# winforms flowlayoutpanel

我处于一种奇怪的情况,我已经意识到如果我的代码上的设置断点会被触发,否则永远不会调用该方法。我的问题是;如何设置一个断点来改变C#代码与WinForms应用程序交互的方式?

罪魁祸首似乎是ScrollableControl.ScrollControlIntoView Method。我已将Flowlayoutpanel的autoScroll属性设置为 true ,并且垂直滚动条可见,但它仍然没有区别。

Code being called only when in debug mode, and breakpoint is hit

2 个答案:

答案 0 :(得分:5)

调用堆栈会让它显而易见。不得不猜测:是的,调试器肯定会影响GUI代码。特别是通过设置断点。这是焦点从窗口更改为Visual Studio主窗口的副作用。然后回来。这会影响订阅窗口的De / Activated事件,Got / LostFocus事件以及任何涉及绘制的代码,如果VS与窗口重叠。

在调试依赖于这些事件的GUI代码时,这肯定会受到影响。在极端情况下,您可能需要在另一台机器上设置远程调试器,以便在调试时不会发生这种焦点切换。

ScrollControlIntoView()也是关联的。这通常在控件获得焦点时自动发生。这大致回答了你的问题,很难看出它如何有效地解决你的问题。请务必查看调用堆栈以获得更多信息。

答案 1 :(得分:0)

这取决于 这个代码是什么。如果它在一些事件处理方法(比如调整大小),或者说,绘制方法,可以改变你的应用程序的行为。

这就是为什么程序员的现代桌面应该有2台显示器,在另一台显示器上运行你的应用程序设置你的断点。但即使在这种情况下,你也可以遇到一些问题。

所以如果断点在之前提到过的地方,简单的loggging往往是更适合这种调试的解决方案。