このセクションでは、ASP.NET イベント処理について紹介します。
イベントとは、マウスのクリック、キーの押下、マウスの移動、システム生成の通知などのアクションまたは発生です。プロセスはイベントを通じて通信します。たとえば、割り込みはシステムによって生成されるイベントです。イベントが発生すると、アプリケーションはイベントに応答して管理できます。
ASP.NET 上のイベントはユーザーのマシン上で発生し、サーバー上で処理されます。たとえば、ユーザーはブラウザに表示されたボタンをクリックします。クリックイベントが発生します。ブラウザは、このクライアント側イベントをサーバーに送信することで処理します。
サーバーには、イベントが発生したときに何を行うかを記述するサブルーチンがあり、これはイベント ハンドラーと呼ばれます。したがって、イベント情報がサーバーに渡されるときに、クリック イベントがイベント ハンドラーに関連付けられているかどうかがチェックされます。該当する場合、イベント ハンドラーが実行されます。
ASP.NET イベント ハンドラーは通常、2 つのパラメーターを受け取り、null を返します。最初のパラメータはイベントを発生させるオブジェクトを表し、2 番目のパラメータはイベント パラメータです。
イベントの一般的な構文は次のとおりです。
private void EventName (object sender, EventArgs e);
最も重要なアプリケーション イベントは次のとおりです。
Application_Start - アプリケーションまたは Web ページが起動されるときに発生します。
Application_End - アプリケーションまたは Web ページを停止するときに発生します。
同様に、最も一般的に使用されるセッション イベントは次のとおりです。
Session_Start – ユーザーが最初にアプリケーションからページをリクエストしたときに発生します。
Session_End – セッションが終了すると発生します。
一般的なページ イベントとコントロール イベントは次のとおりです。
DataBinding – コントロールがデータ ソースにバインドされるときに発生します。
破棄– ページまたはコントロールが放されたときに発生します。
エラー– 未処理の例外が発生した場合に発生するページ イベントです。
Init – ページまたはコントロールを初期化するときに発生します。
Load – ページまたはコントロールがロードされるときに発生します。
PreRender – ページまたはコントロールが表示されるときに発生します。
Unload – ページまたはコントロールがメモリからアンロードされるときに発生します。
すべての ASP.NET コントロールはクラスとして実装されており、ユーザーがコントロールに対して特定のアクションを実行するとイベントを発生させます。たとえば、ユーザーがボタンをクリックすると、「Click」イベントが生成されます。イベントを処理するために、組み込みのプロパティとイベント ハンドラーがあります。イベント処理アプリケーションは、イベントに応答し、それに対して適切なアクションを実行するようにコード化されています。
既定では、Visual Studio は、句を処理するサブルーチンを含むイベント ハンドラーを作成します。この句は、プログラムが処理するコントロールとイベントに名前を付けます。
ボタン コントロールの ASP タグ:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
Click イベントのイベント処理アプリケーション:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancel.ClickEnd Sub
イベントは、Handles 句を使用せずにエンコードすることもできます。ハンドラーには、コントロールのプロパティに適合する適切なイベントにちなんだ名前を付ける必要があります。
ボタン コントロールの ASP タグ:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click" />
Click イベントのイベント処理アプリケーション:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)End Sub
一般的な制御イベントには次のものがあります。
イベント | 財産 | コントロール |
---|---|---|
クリック | クリック時 | ボタン、画像ボタン、リンク ボタン、画像ビットマップ |
指示 | オンコマンド | ボタン、画像ボタン、リンクボタン |
テキストが変更されました | テキスト変更時 | テキストボックス |
選択されたインデックスが変更されました | OnSelectedIndexChanged | ドロップダウン メニュー、リストボックス、ラジオ ボタン リスト、チェックボックス付きリストボックス |
チェック済み変更済み | チェック変更時 | チェックボックス、ラジオボタン |
一部のイベントでは、フォームがただちにサーバーにポストバックされます。これらはコールバック イベントと呼ばれます。たとえば、Button.Click などのクリック イベントです。
一部のイベントはサーバーにすぐには返されません。これらは非コールバック イベントと呼ばれます。
たとえば、TextBox.TextChanged や CheckBox.CheckedChanged などの変更イベントや選択イベントです。これらの非コールバック イベントは、AutoPostBack プロパティを true に設定することですぐにコールバックできます。
ページ オブジェクトのデフォルト イベントは、load イベントです。同様に、すべてのコントロールにはデフォルトのイベントがあります。たとえば、ボタン コントロールのデフォルト イベントは Click イベントです。
デフォルトのイベント ハンドラーは、デザイン ビューでコントロールをダブルクリックするだけで、Visual Studio で作成できます。次の表は、共通コントロールのリストのデフォルト イベントを示しています。
コントロール | デフォルトのイベント |
---|---|
広告制御(AdRotator) | 広告が作成されました |
項目リスト (箇条書きリスト) | クリック |
ボタン | クリック |
カレンダーコントロール(カレンダー) | 選択が変更されました |
チェックボックス | チェック済み変更済み |
チェックボックスリスト | 選択されたインデックスが変更されました |
データグリッド | 選択されたインデックスが変更されました |
データリスト | 選択されたインデックスが変更されました |
ドロップダウンリスト | 選択されたインデックスが変更されました |
ハイパーリンク | クリック |
画像ボタン | クリック |
ホットスポット (イメージマップ) | クリック |
ハイパーリンクボタン (LinkButton) | クリック |
単一または複数選択のドロップダウン リスト (ListBox) | 選択されたインデックスが変更されました |
メニュー | メニュー項目クリック |
ラジオボタン | チェック済み変更済み |
ラジオボタングループ(RadioButtonList) | 選択されたインデックスが変更されました |
例
この例には、コントロール ラベルとボタン コントロールを含む単純なページが含まれています。 Page_Load、Page_Init、Page_PreRender などのページ イベントが発生すると、ラベル コントロールによって表示されるメッセージが送信されます。ボタンがクリックされると、Button_Click イベントが発生し、ラベルによって表示されるメッセージも送信されます。
新しい Web サイトを作成し、[コントロール] ツール ボックスからラベル コントロールとボタン コントロールをドラッグします。ウィンドウのプロパティを使用して、コントロール ID を .lblmessage および .btnclick に設定します。ボタン コントロールの text プロパティを「Click」に設定します。
マークアップ ファイル (.aspx):
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="eventdemo._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblmessage" runat="server" > </asp:Label> <br /> <br /> <br /> <asp:Button ID="btnclick" runat="server" Text="Click" onclick="btnclick_Click" /> </div> </form> </body></html>
デザイン ビューをダブルクリックし、ファイルの背後にあるコードに移動します。 Page_Load イベントはコードなしで自動的に作成されます。次のようなコード行を記述します。
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace eventdemo { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { lblmessage.Text += "Page load event handled. <br />"; if (Page.IsPostBack) { lblmessage.Text += "Page post back event handled.<br/>"; } } protected void Page_Init(object sender, EventArgs e) { lblmessage.Text += "Page initialization event handled.<br/>"; } protected void Page_PreRender(object sender, EventArgs e) { lblmessage.Text += "Page prerender event handled. <br/>"; } protected void btnclick_Click(object sender, EventArgs e) { lblmessage.Text += "Button click event handled. <br/>"; } }}
ページを実行します。タグには、ページの読み込み、ページの初期化、およびページのプレビュー イベントが表示されます。ボタンをクリックして効果を確認します。