當我們初學Winform的時候被其神奇的事件功能所吸引,當點擊一個按鈕時,便會跳到我們所寫的點擊方法當中去。然而這並不符合我們對方法的理解,究竟.net在後面幫助我們實現了什麼。我們怎樣模擬其事件的實現呢。下麵先從Button的Click方法說起。 1.首先查看設計器自動生成的代碼 EventHan ...
當我們初學Winform的時候被其神奇的事件功能所吸引,當點擊一個按鈕時,便會跳到我們所寫的點擊方法當中去。然而這並不符合我們對方法的理解,究竟.net在後面幫助我們實現了什麼。我們怎樣模擬其事件的實現呢。下麵先從Button的Click方法說起。
1.首先查看設計器自動生成的代碼
partial class Form1 { #region Windows 窗體設計器生成的代碼 /// <summary> /// 設計器支持所需的方法 - 不要 /// 使用代碼編輯器修改此方法的內容。 /// </summary> private void InitializeComponent() { //實例化一個按鈕 this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // button1 // this.button1.Location = new System.Drawing.Point(491, 100); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = true; //添加點擊事件 this.button1.Click += new System.EventHandler(this.button1_Click); } #endregion private System.Windows.Forms.Button button1; }
我們發現了對事件的添加 this.button1.Click += new System.EventHandler(this.button1_Click);
this.button1.Click中的Click是什麼呢?我們F12轉到定義看一下(註意:Button繼承自Control(所有控制項父類))
我們發現event,Click是一個事件,然後我們反編譯看一下(可以看到+=,-=的實現)
EventHandler轉到定義sender事件源(就是被誰引發的),e(事件數據)