1. 程式人生 > >關於後臺事件中(object sender, EventArgs e)說明

關於後臺事件中(object sender, EventArgs e)說明

 

sender是事件源 就是指發起這個事件的物件(控制元件) 
//表示觸發事件的那個控制元件 
比如說你按下按鈕,那麼sender就是按鈕

又如:textboxchange,sender就是該textbox,在事件處理中就可以用sender代替textbox. 
如: 
(sender as TextBox).Text=”fdsaewfsda”; 
如果同一類控制元件處理方法相同,可以只寫一個事件處理,其他的用這一個就行了sender就會指代當前觸發事件的控制元件

EventArgs是事件引數 
//該事件傳入的引數,比如說你用滑鼠點選窗體 
那麼EventArgs是會包含點選的位置等等引數 
它用來輔助你處理事件

在日常開發中,大多數控制元件都需要寫觸發函式,而觸發函式中的兩個引數 sender 和 e 的作用,就不容小視。


<asp:Button ID="Button1" runat="server" Text="Button1" OnClick="Button_OnClick" /> <asp:Button ID="Button2" runat="server" Text="Button2" OnClick="Button_OnClick" /> <asp:Button ID="Button3" runat="server" Text="Button3" OnClick="Button_OnClick" />

在上面的程式中設計了三個Button控制元件,他們點選後觸發的函式都為Button_OnClick;那麼我如何分辨出到底是哪一個Button進行了點選呢,就要用到觸發函式中的引數來判斷。

protected void Button_OnClick(object sender, EventArgs e)  
{  
    Button btn = (Button)sender;  
    Response.Write(btn.ID);  
}  

這時,我將型別為object的sender變數進行轉型為Button後,就可以通過他的ID屬性來判斷。

另一個例子: 

我設計了一個ImageButton控制元件,進行點選操作時觸發的函式為ImageButton_OnClick;

protected void Button_OnClick(object sender, ImageClickEventArgs e)  
{  
    Response.Write("X座標:"+e.X.ToString()); Response.Write("Y座標:"+e.Y.ToString()); } 

這時,我在圖片上任意地方點選後,就會顯示出點選時的X,Y座標。

但是,引數e經常是與控制元件的CommandName與CommandArgument屬性繫結起來進行傳參的。 
他們所要觸發的相應操作是OnCommand而不是OnClick操作。 
例:

<asp:Button ID="Button1" runat="server" Text="Button1" CommandName="Button1" OnCommand="Button_OnCommand"/> <asp:Button ID="Button2" runat="server" Text="Button2" CommandName="Button2" OnCommand="Button_OnCommand"/> <asp:Button ID="Button3" runat="server" Text="Button3" CommandName="Button3" OnCommand="Button_OnCommand" />
protected void Button_OnCommand(object sender, CommandEventArgs e)  
{  
    Response.Write(e.CommandName);  
    Response.Write(e.CommandArgument);  
}