日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C#事件中的兩個參數詳解(object?sender,EventArgs?e)_C#教程

作者:JosieBook ? 更新時間: 2022-11-03 編程語言

C#事件參數(object sender,EventArgs e)

C#窗體程序有很多的事件,比如按鈕點擊事件,雙擊事件,Form_Load事件,這些事件的實現里都有兩個參數(object sender,EventArgs e),什么意思呢?

我們可以看到,Form1_Load(object sender, EventArgs e)本質就是一個有兩個參數的函數。

那么函數怎么能夠自己調用自己呢?不能。它肯定在某個地方被調用了。

在Form1_Load上鼠標右鍵點擊查看所有引用,如下:

然后點擊這個查到的內容,轉到它的調用出:

原來Form1_Load()是在Form1.desinger下面的InitializeComponent()函數里調用的。InitializeComponent()這個函數是在主界面Form類的構造函數里調用的。

我們也知道,在主程序運行的時候,會自動執行Form1類下面的構造函數,進而調用InitializeComponent()函數,InitializeComponent()函數通過里面的Load事件調用From1_Load()函數:

this.Load += new System.EventHandler(this.Form1_Load); 

而這個調用,其實是Load事件調用了Form1_Load()函數。

而System.EventHandler是委托,通過new委托的方式調用事件要觸發的函數。

鼠標放到EventHandler上轉到這個委托的定義里去:

我們可以看到原來是Load事件所在的委托,在定義的時候就有這兩個參數(object sender, EventAgrs e),那么可以知道,Form1_Load(object sender, EventAgrs e)函數是被Load事件調用的,所以要和委托EventHandler的參數保持一致。

綜上,這兩個參數從形式上看,只是為了和EventHandler委托的參數保持一致。

事件通過委托調用的函數,必須和委托的參數保持一致。

C#函數中(object sender, EventArgs e)參數是什么意思

object sender:表示觸發事件的控件對象

sender參數用于傳遞指向事件源對象的引用。簡單來講就是當前的對象。

例如button的點擊事件,那么這個sender就代表這個button自己。

private void btn1_Click(object sender, EventArgs e)
{
? ? ? //獲取當前點擊的Button
? ? ? Button thisClickedButton = sender as Button;
} ?

EventArgs e:表示事件數據的類的基類

e參數是是EventArgs類型。簡單來理解就是記錄事件傳遞過來的額外信息。

一般用于傳遞用戶點擊的位置啊,鍵盤按下的鍵等事件的額外信息。

例如鼠標點擊的位置、按下、釋放等信息。

原文鏈接:https://blog.csdn.net/qq_38628970/article/details/105677531

欄目分類
最近更新