網站首頁 編程語言 正文
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
相關推薦
- 2022-05-01 Python字符串和其常用函數合集_python
- 2022-03-14 spring junit 做單元測試,報 Failed to load ApplicationCon
- 2023-05-29 SQLSERVER?語句交錯引發的死鎖問題案例詳解_MsSql
- 2022-07-06 使用client?go實現自定義控制器的方法_Golang
- 2023-04-06 python判斷列表為空的三種方法總結_python
- 2022-04-24 C語言時間函數的ctime()和gmtime()你了解嗎_C 語言
- 2022-06-25 EF?Core的CRUD(增刪改查)基本操作_實用技巧
- 2022-07-14 Python?socket如何實現服務端和客戶端數據傳輸(TCP)_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支