Page_Load
ハンドラー内など、発生する前に発生するコントロールイベントのリストを取得することは可能ですか?
たとえば、ボタンがクリックされた場合、button_click
イベント ハンドラーが呼び出される前にこれを把握できますか?
非常に難しい質問を選択しました...その理由は、イベントが発生する方法がいくつかあるからです。
1) __EVENTTARGET (前述のとおり) 2) ボタンの名前が MyButt の場合、クエリ文字列に "MyButt=" が表示されます。3) 各コントロール (たとえば、TextBox など) がリクエストをチェックして、ViewState の値が投稿されたものと異なるかどうかを確認すると、"Text_Changed" が発生します。
ただし、#1 と #2 を使用していくつかの場所を確認できます。
残念ながら、__EVENTTARGET 値を調べてもうまくいきません。多くの場合、その値は空になります。ポストバック処理では、イベント ターゲット値 (存在する場合) だけでなく、フォームによってポストされた値 (テキスト ボックスなど) に対するコントロール状態値のテストに基づいて、どのイベントを発生させるかについていくつかの決定を行い、TextChanged などのイベントを発生させるかどうかを決定します。 .
イベントをキャプチャしたいすべてのコントロールに実際にイベント ハンドラーを接続する以外に、それを特定する方法はないと思います。ただし、基本的にフレームワークが行うことは可能かもしれません。コントロールが作成されてからビューステートが復元されるまでの間に、投稿された値が処理される前に行う必要があります。現在のコントロール値 (viewstate から) をポストされた値と比較して、基本的にどのイベントが発生するかを判断できます。
これであなたの目標は何ですか?おそらく、より良い解決策があります。
以下には、クリックされたときにボタンのマングルされた ID が含まれています。
Page.Request.Form["__EVENTTARGET"]
これがあなたの質問に答えると私が信じている例です。
もう 1 つの方法は、デバッグ時にいくつかのブレークポイントを設定することです。