4

私は奇妙な状況にあり、コードに設定されたブレークポイントがある場合はトリガーされ、そうでない場合はメソッドが呼び出されないことに気づきました。私の質問は; ブレークポイントを設定すると、C#コードがWinFormsアプリケーションと対話する方法がどのように変わりますか?

原因はScrollableControl.ScrollControlIntoViewメソッドのようです。FlowlayoutpanelのautoScrollプロパティをtrueに設定しました。垂直スクロールバーは表示されていますが、それでも違いはありません。

デバッグモードのときにのみ呼び出され、ブレークポイントに到達したコード

4

2 に答える 2

6

コールスタックはそれを明らかにします。1つなしで推測する必要があります:はい、デバッガーは確かにGUIコードに影響を与える可能性があります。特にブレークポイントを設定することによってそうです。これは、フォーカスがウィンドウからVisualStudioのメインウィンドウに変わることによる副作用です。帰ってきた。これは、ウィンドウのDe / Activatedイベント、Got / LostFocusイベント、およびVSがウィンドウとオーバーラップする場合のペイントを含むコードをサブスクライブするコードに影響します。

これは、これらのイベントに依存するGUIコードをデバッグするときに確かに邪魔になる可能性があります。極端な場合、デバッグ中にこのフォーカスの切り替えが発生しないように、別のマシンでリモートデバッガーをセットアップする必要があります。

ScrollControlIntoView()も関連付けられています。これは通常、コントロールがフォーカスを取得したときに自動的に発生します。これは大まかにあなたの質問に答えますが、実際に問題を解決することがどのように役立つかはわかりません。より多くの洞察を得るために、必ずコールスタックを確認してください。

于 2013-01-23T13:07:04.960 に答える
0

これは、このコードがどこにあるかによって異なります。イベント処理メソッド(サイズ変更など)、またはペイントメソッドの場合、アプリケーションの動作変わる可能性があります。

そのため、プログラマー向けの最新のデスクトップに は2つのモニターが必要です。一方のモニターでアプリケーションを実行し、もう一方のモニターでブレークポイントを設定します。しかし、その場合でも、いくつかの問題に直面する可能性があります。

したがって、以前に義務付けられた場所にブレークポイントがある場合、この種のデバッグには単純なログ記録がより適切なソリューションであることがよくあります。

于 2013-01-23T12:19:49.757 に答える