台灣最大程式設計社群網站
線上人數
920
 
會員總數:246713
討論主題:190131
歡迎您免費加入會員
討論區列表 >> C# >> C#的事件用法
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C#的事件用法
價值 : 100 QP  點閱數:2443 回應數:7
樓主

外星人
初學者
90 14
353 36
發送站內信

在VB時,做一個類別的事件
只要
1. 宣告 public event eventA(ByVal Index As Integer)
2. 然後在類別的方法中,執行 raiseevent eventA(123)

在其他類別引用此類別時,只要
1. 宣告類別時,加上 withEvents
2. 在對應的方法後加上 Handles 類別變數.eventA 就好

但在C#就不是這麼簡單了,可能是基礎不好,爬文爬了許久,還是看不懂
能否有大大用簡單的範例說明C#的事件用法
ex:
宣告了事件 EventTest,如何讓EventTest發生時,執行EventHappen??
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public delegate void EventTestHandler(int EventCode);
//宣告事件指定委派
public event EventTestHandler EventTest;

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
//在這邊觸發事件
}

private void EventHappen(int EventCode)
{
//在這裡處理事件
}
}
}


搜尋相關Tags的文章: [ C# ] , [ 事件 ] , [ event ] , [ delgate ] ,
本篇文章發表於2017-06-01 16:15
1樓
回應

春天
檢舉此回應

本篇文章回覆於2017-06-01 16:20
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

春天
檢舉此回應
大概像這樣

本篇文章回覆於2017-06-01 16:24
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

外星人
檢舉此回應
就這麼簡單??
一定是我太愚鈍了
感謝大大~~
另,請問
不加invoke的差異??
本篇文章回覆於2017-06-01 16:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

春天
檢舉此回應
Event.Invoke() vs Event()
簡單說,沒有差別
但是加上Invoke可讀性比較高
本篇文章回覆於2017-06-01 16:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

外星人
檢舉此回應
想請問,很多的文章都會有類似的語法
if(EventTest != null)
{
int EventCode = 100;
EventTest.Invoke(EventCode);
}
直接執行 EventTest(100);也可以
請問 if(EventTest != null) 的用意??

本篇文章回覆於2017-06-01 17:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

春天
檢舉此回應
1.直接執行 EventTest(100)當然可以

2.如果事件沒有被訂閱,它會是 null
此時去Invoke會拋出異常

本篇文章回覆於2017-06-01 17:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

小魚
檢舉此回應
如果我沒搞錯,invoke一般需要用到是在跨執行緒的時候,
如果沒有跨執行緒的問題,不需要用到invoke
其實c#很簡單的,我反而覺得vb看起來文字很多...
本篇文章回覆於2017-06-02 00:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.