C#中object sender,EventHandler e有個毛作用


button1_Click(object sender,EventHandler e) 

{
Button button=(Button)sender;
button.Text="text property has been changed at its event";
}

object 是事件的激發控件,或叫事件源:具體我們可以用MessageBox.Show(sender.ToString())直接輸出,我們可以直接看到;

如果一個按鈕button1,我點擊這個按鈕﹕sender就是按鈕﹐因為事件是在按鈕內部觸發的。如果要在程序中使用sender,一般情況下你就必須知道sender是哪個類型的(比如在上面這中情況中必須只要sender的type是Button),然后在轉換到那個類型中去﹐這樣你就可以在事件中訪問事件發送者的數據

EventArgs是包含事件數據的類的基類,用於傳遞事件的細節:

e是事件參數,也就是說在定義事件的類里定義的那些屬性,在某些事件里,e用處不大;
所包含的細節多少,根據各種EventArgs的定義而定,如EventArgs就是一個空值,我們在VS環境中右鍵"轉到定義處"就可以發現其定義是這樣:

public class EventArgs
{
// 摘要:
// 表示沒有事件數據的事件。
public static readonly EventArgs Empty;
// 摘要:
// 初始化 System.EventArgs 類的新實例。

public EventArgs();
}

如MouseEventArgs是EventArgs的子類,那么它就定義了許多可以輸出的值,其定義如下:

// 摘要: // 為 System.Windows.Forms.Control.MouseUp、System.Windows.Forms.Control.MouseDown
// 和 System.Windows.Forms.Control.MouseMove 事件提供數據。
[ComVisible(true)]
public class MouseEventArgs : EventArgs
{
// 摘要:
// 初始化 System.Windows.Forms.MouseEventArgs 類的新實例。
//
// 參數:
// clicks:
// 鼠標按鈕曾被按下的次數。
//
// delta:
// 鼠標輪已轉動的制動器數的有符號計數。
//
// Y:
// 鼠標單擊的 y 坐標(以像素為單位)。
//
// button:
// System.Windows.Forms.MouseButtons 值之一,它指示曾按下的是哪個鼠標按鈕。
//
// x:
// 鼠標單擊的 x 坐標(以像素為單位)。
比如在MouseEventArgs的Mouse事件中,可以看到e包括mouse的坐標值等,以供你的程序使用。e參數就是通過這些定義的屬性進行調用或輸出的,這里我們就可以調用e.Y或e.X獲得具體的參數細節了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM