0

プロジェクトがあり、デザインがコードにどのように対応しているかわからない場合は、ボタンを押すたびにデバッガーを中断して、コード内の適切な場所にすばやく移動できるようにする方法があります。 ?

4

3 に答える 3

10

を呼び出してSystem.Diagnostics.Debugger.Break()、接続されているデバッガーにその行で中断するように指示できます。

何も接続されていない場合、Windowsは登録されているデバッガーを起動しようとします。登録されていない場合は、アプリケーションの例外/クラッシュが発生します。したがって、本番環境のコードに残さないでください:)

例(icemanindのコメントによる)

#if DEBUG
    Debugger.Break();
#endif 

ボタンをクリックするだけで中断したい場合は、少し注意が必要です。最も簡単なのは、Buttonラッパークラスを作成しOnClick、Break呼び出しをオーバーライドしてそこに配置することです。例えば:

public class ButtonWedge : Button
{
    protected override void OnClick(System.EventArgs e)
    {
        Debugger.Break();
        base.OnClick(e);
    }
}

そのクラスを追加したら、それをデザイン画面にドラッグアンドドロップできます。ただし、すでにコードを持っている場合は、designer.csファイルを編集して。に置き換えることができSystem.Windows.Forms.ButtonますButtonWedge

に入ると、キーを使用して基本クラスの配列をOnClick確認することで、イベントがどこに行くかを確認できます。これには、このイベントにサブスクライブしているものを見つけるためにプロパティとプロパティを確認できるマルチキャストデリゲートが含まれます。つまり、実行時のクリックハンドラの名前は次のようになります。ClickEventsControl.EventClickMethodTargetClick

string handlerName = base.Events[Control.EventClick].Target.GetType().FullName + '.'
   + base.Events[Control.EventClick].Method.Name;

特定のイベントにブレークポイントを設定するわけではありませんが、Click何がどこで起こっているのかを知ることができます...

于 2012-09-19T17:36:24.250 に答える
1

プロジェクト内のプログラムのボタンを意味する場合は、Peterの回答を使用してください。キーボードまたはマウスのボタンで実行を中断または一時停止できるかどうかを尋ねた場合は、Ctrl + Alt+Pauseを押すことができます。

于 2012-09-19T17:44:09.483 に答える
1

デザインモードのボタンでDoubleClickだけを使用できないのはなぜですか。クリックイベントを処理する関数のコードで開きます。

于 2012-09-19T18:58:11.540 に答える