1

My VB.NET Webページには、この標準イベントがあります。イベント宣言の「Handles」句に注意してください。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub

私のC#Webアプリには、次のものがあります。

protected void Page_Load(object sender, System.EventArgs e)
{

C#には同等の「ハンドル」がないため、これまで見てきたことから、イベントハンドラーはデリゲート+ =構文を使用して接続されているため、これを探していましたが、aspxページaspx.csで見つけることができませんでした。ファイルまたはaspx.designer.csファイル。

VBでは、コードエディタウィンドウの上部に2つのドロップダウンリストがあり、WebフォームまたはWebフォーム自体で任意のオブジェクトを選択して、そのオブジェクトで発生する可能性のあるイベントを確認できます。イベントを選択すると、イベントハンドラーに移動するか、イベントハンドラーが存在しない場合は、スタブが作成されます。

C#の[プロパティ]ウィンドウ(およびVBでもそうだと思います)には、選択したオブジェクトGUIオブジェクトのイベントのリストを表示する[イベント]タブがあることは知っていますが、[ページ]は選択可能なオブジェクトとして表示されません。

  1. C#は、ハンドラーへのイベントのフックアップをどこで定義しますか?

  2. Pageイベントハンドラルーチンのスタブを生成するにはどうすればよいですか?ハンドルがデフォルトで表示されることは知っていますが、ハンドルが削除された場合、またはPage_initializeコードを追加したい場合はどうなりますか?スタブを取得する簡単な方法はありますか、それとも構文についてオブジェクトブラウザに移動する必要がありますか?

4

3 に答える 3

1

C#Webフォームでは、マークアップコードビハインドの@PageディレクティブAutoEventWireupプロパティは、VBのfalseではなく、デフォルトでtrueに設定されています。@Pageディレクティブとそれに関連するすべてのプロパティを表示するには、ソリューションエクスプローラーでWebページを右クリックし、[マークアップの表示]を選択します。

AutoEventWireup = trueを指定すると、ランタイムは、コード内で見つかった、Page_EventNameの命名規則形式に一致するイベントハンドラーを自動的に接続します。ただし、この機能をオフにして、標準のC#+ =割り当てを使用して、ページイベントハンドラーを手動で接続することができます。AutoEventWireup = trueを使用している場合は、メソッド名が一致するだけでなく、ランタイムによって自動的に接続されるように、適切なメソッドシグネチャも必要です。

AutoEventWireupの詳細については、次のKBを参照してください:http ://support.microsoft.com/kb/324151

2番目の質問に関しては、C#では、VBのようにページイベントの「スタブ」を生成する方法はありません。他の人が指摘しているように、自分自身を含めて、C#には、プロパティウィンドウを介してコントロールオブジェクトのイベントスタブを生成するための同様の機能があります。ただし、ページイベントの場合は、イベント名と適切な署名を知って、自分でコーディングする必要があります。

于 2012-07-08T22:37:20.127 に答える
1

C#は、ハンドラーへのイベントのフックアップをどこで定義しますか?

Page_Load自動的に接続される特別なイベントです。予約名です。したがって、このイベントをフックするために必要なことは何もありません。コードビハインドで宣言するだけです。

于 2012-07-08T19:26:05.040 に答える
-1
namespace MyNamespace
{
    public class Myclass : System.Web.UI.Page
    {
        override protected void OnInit(EventArgs e)
        {
            this.Load += new System.EventHandler(this.Page_Load);
        }

        private void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

参照:https ://support.microsoft.com/en-us/help/324151/how-to-use-the-autoeventwireup-attribute-in-an-asp-net-web-form-b​​y-usi

于 2018-01-26T13:20:54.440 に答える