W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本節(jié)為你介紹 ASP.NET 事件處理。
事件是一個(gè)動(dòng)作或發(fā)生的事,如鼠標(biāo)單擊、按鍵、鼠標(biāo)移動(dòng),或任何系統(tǒng)生成的通知。一個(gè)進(jìn)程通過事件進(jìn)行溝通。例如,中斷是系統(tǒng)生成的事件。當(dāng)事件發(fā)生,應(yīng)用程序也能夠回應(yīng)和管理。
ASP.NET 上的事件在用戶機(jī)器上引發(fā),在服務(wù)器上處理。例如,一個(gè)用戶點(diǎn)擊了在瀏覽器中顯示的一個(gè)按鈕。一個(gè)點(diǎn)擊事件被引發(fā)。瀏覽器通過把它發(fā)送給服務(wù)器從而處理這個(gè)客戶端事件。
服務(wù)器有一個(gè)子程序來描述當(dāng)事件被引發(fā)時(shí)該做什么;這個(gè)被稱為事件處理程序。因此,當(dāng)事件信息被傳遞給服務(wù)器,它會(huì)檢查點(diǎn)擊事件是否與事件處理程序有關(guān)聯(lián)。如果有關(guān)聯(lián)的話,事件處理程序就會(huì)被執(zhí)行。
ASP.NET 事件處理程序一般采用兩個(gè)參數(shù)并返回空。第一個(gè)參數(shù)代表了對(duì)象激發(fā)事件,第二個(gè)參數(shù)是事件參數(shù)。
一個(gè)事件的一般句法是:
private void EventName (object sender, EventArgs e);
最重要的應(yīng)用程序事件是:
同樣的,最常使用的會(huì)話事件是:
常見的頁面和控件事件有:
所有的 ASP.NET 控件作為類而實(shí)現(xiàn),并且當(dāng)用戶對(duì)其執(zhí)行一個(gè)特定的動(dòng)作時(shí),它們會(huì)引發(fā)事件。比如說,當(dāng)一個(gè)用戶點(diǎn)擊了一個(gè)按鈕,那就生成了 'Click' 事件。對(duì)于處理事件來說,有內(nèi)置屬性和事件處理程序。事件處理應(yīng)用程序被編碼作為一個(gè)事件的回應(yīng),并且對(duì)其采取適當(dāng)?shù)男袆?dòng)。
默認(rèn)情況下,Visual Studio 創(chuàng)建一個(gè)事件處理程序,包括處理?xiàng)l款的子程序。這個(gè)子句命名程序處理的控件和事件。
button 控件的 ASP 標(biāo)簽:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" />
Click 事件的事件處理應(yīng)用程序:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles btnCancel.Click
End Sub
一個(gè)事件同樣可以在沒有 Handles 子句的前提下被編碼。然后,處理程序必須根據(jù)適合控件屬性的適當(dāng)事件進(jìn)行命名。
button 控件的 ASP 標(biāo)簽:
<asp:Button ID="btnCancel" runat="server" Text="Cancel" Onclick="btnCancel_Click" />
Click 事件的事件處理應(yīng)用程序:
Protected Sub btnCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs)
End Sub
常見的控件事件有:
事件 | 屬性 | 控件 |
---|---|---|
Click | OnClick | 按鈕,圖像按鈕,鏈接按鈕,圖像導(dǎo)位圖 |
Command | OnCommand | 按鈕,圖像按鈕,鏈接按鈕 |
TextChanged | OnTextChanged | 文本框 |
SelectedIndexChanged | OnSelectedIndexChanged | 下拉菜單,列表框,單選按鈕列表,帶復(fù)選框的列表框 |
CheckedChanged | OnCheckedChanged | 復(fù)選框,單選按鈕 |
一些事件導(dǎo)致表單立即發(fā)回到服務(wù)器,這些被稱為回調(diào)事件。例如,單擊事件像 Button.Click。
一些事件則不會(huì)被立即發(fā)回到服務(wù)器,這些被稱為非回調(diào)事件。
例如,改變事件或者選擇事件,像 TextBox.TextChanged 或者 CheckBox.CheckedChanged。這些非回調(diào)事件可以通過設(shè)置它們的 AutoPostBack 屬性為 true 便可立即使它們回調(diào)。
頁面對(duì)象的默認(rèn)事件是加載事件。相似地,每一個(gè)控件都有一個(gè)默認(rèn)的事件。比如,按鈕控件的默認(rèn)事件就是 Click 事件。
默認(rèn)事件處理程序可以在 Visual Studio 中創(chuàng)建,僅通過雙擊設(shè)計(jì)視圖中的控件。以下表格展示了一寫常見控件的默認(rèn)事件:
控件 | 默認(rèn)事件 |
---|---|
廣告控件(AdRotator) | AdCreated |
項(xiàng)目列表(BulletedList) | Click |
按鈕(Button) | Click |
日歷控件(Calender) | SelectionChanged |
復(fù)選框(CheckBox) | CheckedChanged |
復(fù)選列表(CheckBoxList) | SelectedIndexChanged |
數(shù)據(jù)表格(DataGrid) | SelectedIndexChanged |
數(shù)據(jù)列表(DataList) | SelectedIndexChanged |
下拉列表(DropDownList) | SelectedIndexChanged |
超鏈接(HyperLink) | Click |
圖像按鈕(ImageButton) | Click |
熱點(diǎn)(ImageMap) | Click |
超鏈接按鈕(LinkButton) | Click |
單選或多選的下拉列表(ListBox ) | SelectedIndexChanged |
菜單(Menu) | MenuItemClick |
單選按鈕(RadioButton) | CheckedChanged |
單選按鈕組(RadioButtonList) | SelectedIndexChanged |
示例
這個(gè)例子包括一個(gè)簡(jiǎn)單頁面,上面有控件標(biāo)簽和一個(gè)按鈕控件。當(dāng)頁面事件,例如 Page_Load,Page_Init,Page_PreRender 等等事件發(fā)生的時(shí)候,它就會(huì)發(fā)送一條信息,會(huì)由標(biāo)簽控件顯示。當(dāng)點(diǎn)擊一個(gè)按鈕,Button_Click 事件被引發(fā),同樣發(fā)送一條由標(biāo)簽展示的信息。
創(chuàng)建一個(gè)新的網(wǎng)站,從控件工具框中拖拽一個(gè)標(biāo)簽控件和按鈕控件。使用窗口屬性,相應(yīng)地設(shè)置控件的 ID 為 .lblmessage. and .btnclick。設(shè)置按鈕控件的文本屬性為“Click”。
標(biāo)記文件(.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>
雙擊設(shè)計(jì)視圖并移動(dòng)至文件后的代碼。Page_Load 事件是自動(dòng)創(chuàng)建的,其中沒有任何的代碼。寫下以下的自我解釋的代碼行:
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/>";
}
}
}
執(zhí)行頁面。標(biāo)簽顯示頁面加載,頁面初始化以及頁面預(yù)覽事件。點(diǎn)擊按鈕查看效果:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: