2011-05-02 82 views
1

您能告訴我如何確定在winform中引發哪些事件 或如何將所有引發的事件添加到列表或c#中的文件?如何確定是否引發事件

+1

你只是想調試事件,或者你想在運行的應用程序是生產質量時將事件記錄到文件?你的問題的具體應用是什麼? – jlafay 2011-05-02 13:22:37

+0

我想記錄應用程序中的每個事件,並且在不訂閱程序中的每個事件的情況下執行此操作。 – namco 2011-05-02 14:24:01

回答

0

我不知道,我正確地理解你的問題,但我還是要嘗試回答這個問題:
當您訂閱的事件,你的方法時就會引發該事件被調用。在你的方法中,你可以記錄事件發生。

+0

我不想訂閱所有消息,我想要獲得所有募集的事件 – namco 2011-05-02 13:29:26

+0

@namco - 「獲取所有募集的事件」是什麼意思?你的意思是你想讓你的應用程序在事件發生時得到通知? – mbeckish 2011-05-02 13:33:18

+0

@namco:這就是我的答案。爲了避免混淆,我重新回答了一小部分答案。 – 2011-05-02 13:39:50

1

從你的問題,這聽起來像你想看到的是被激發每個事件。要做到這一點,您需要訂閱每個活動。如果你真的想走這條路,你可以創建一個方法來讀取傳入的變量,並告訴你什麼叫做方法。然後,您可以將該方法掛鉤到winform應用程序中的每個事件。名單將是巨大的,但它會讓你知道每個事件何時被解僱。

0

要獲得被宣佈或由當前Type繼承

typeof(MyClass).GetEvents() 

之後,對於每個事件,您可以添加一個簡單的委託

MyClass instance = new MyClass(); 
foreach (var e in typeof(MyClass).GetEvents()) 
{ 
    FieldInfo fi = typeof(MyClass).GetField(e.Name, 
             BindingFlags.NonPublic | BindingFlags.Instance); 
    object value = fi.GetValue(instance); 
    if (value == null) 
    { 
     e.AddEventHandler(instance, handler); 
    } 
} 
1

您可以使用Managed Spy。它在窗口左側的樹視圖和右側的PropertyGrid中顯示進程列表。您可以擴展該進程以查看該進程中的頂級窗口。

當您選擇一個控件時,PropertyGrid顯示該控件的屬性。單擊事件選項卡將在樹視圖中的當前所選控件上顯示諸如MouseMove之類的事件。要開始記錄事件,請單擊開始記錄按鈕。輸出將如圖所示。 enter image description here

+0

+1:現在很酷! – 2011-05-02 13:52:52

相關問題