プロジェクトがあり、デザインがコードにどのように対応しているかわからない場合は、ボタンを押すたびにデバッガーを中断して、コード内の適切な場所にすばやく移動できるようにする方法があります。 ?
3 に答える
を呼び出して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
確認することで、イベントがどこに行くかを確認できます。これには、このイベントにサブスクライブしているものを見つけるためにプロパティとプロパティを確認できるマルチキャストデリゲートが含まれます。つまり、実行時のクリックハンドラの名前は次のようになります。Click
Events
Control.EventClick
Method
Target
Click
string handlerName = base.Events[Control.EventClick].Target.GetType().FullName + '.'
+ base.Events[Control.EventClick].Method.Name;
特定のイベントにブレークポイントを設定するわけではありませんが、Click
何がどこで起こっているのかを知ることができます...
プロジェクト内のプログラムのボタンを意味する場合は、Peterの回答を使用してください。キーボードまたはマウスのボタンで実行を中断または一時停止できるかどうかを尋ねた場合は、Ctrl + Alt+Pauseを押すことができます。
デザインモードのボタンでDoubleClickだけを使用できないのはなぜですか。クリックイベントを処理する関数のコードで開きます。