C#在自定義事件里傳遞自定義數據
前記
相信很多小伙伴都知道傳值的一些方式,比如構造方法傳值、屬性傳值、Tag傳值、委托傳值、窗體傳值等,今天給大家分享的一種方式,是通過自定義事件來傳值。
對于一般的系統(tǒng)事件,是有兩個參數的,一個是sender,一個是EventArgs,對于sender,我們可能用得還比較多一些,它表示這個事件的觸發(fā)者,一般指向的是一個控件,但是對于EventArgs,我們一般用得會比較少,今天分享的自定義事件傳值就是通過EventArgs來實現(xiàn)。
基礎篇
通過EventArgs來實現(xiàn)傳值,我們首先需要創(chuàng)建一個類,繼承EventArgs,我們可以將需要傳遞的數據,直接在類里面定義成屬性,這里以傳遞一個布爾、一個浮點數為例,代碼如下所示:

然后我們創(chuàng)建一個類,類里面創(chuàng)建一個事件,并激發(fā)事件,這里傳遞的值為True和123.0,代碼如下:

我們在主窗體中,實例化類,并進行事件綁定,看看能不能獲取到傳遞的數據,代碼如下:

運行結果如下所示:

進階篇
在上面知識掌握的基礎上,我們可以做進一步優(yōu)化,在定義事件時,可以不用EventHandler,可以自己定義參數來實現(xiàn),我們再創(chuàng)建一個類——Test2,代碼如下:

這樣我們在事件處理中,就可以直接獲取屬性了,而不需要對EventArgs進行強制轉換,代碼如下:

高級篇
如果繼續(xù)深入的話,我們可以將傳遞的參數改成泛型,這樣就可以輕松傳遞單個參數了,對于多個參數的情形,我們可以使用對象,單一參數比較簡單,這里就不贅述了,主要針對對象傳遞進行說明,首先創(chuàng)建一個參數實體類,這里創(chuàng)建三個屬性,代碼如下:

創(chuàng)建事件參數類,代碼如下:

再創(chuàng)建一個類——Test3,代碼如下:

主窗體調用并進行事件處理,代碼如下:

運行結果如下:
