2013-07-03 29 views
3

我有一個事件,我把我的處理程序與它聯繫起來。當我編寫我的處理程序方法時,我如何知道函數需要哪些參數?如何知道一個事件有什麼樣的參數

例如:

// Add an event handler to be called whenever there is new color frame data 
      this.sensor.ColorFrameReady += this.SensorColorFrameReady; 
      this.sensor.AllFramesReady += this.AllFramesReady; 

    //handler 
    private void AllFramesReady(object sender, AllFramesReadyEventArgs allFramesReadyEventArgs) 
    { 


     throw new NotImplementedException(); 
    } 

我怎麼知道我的函數的參數是object sender和所有幀準備ARGS?

回答

6

您查看該事件的文檔。它將指定哪個委託定義該事件。然後,您可以查找該委託的文檔,以查看函數的簽名必須與委託匹配。

或者你可以依靠Visual Studio來告訴你而不是查找它,這是大多數人做的事情。 (將鼠標懸停在活動上會告訴您代表必須是什麼,或者在鍵盤中輸入SomeEvent +=會提示您創建適當簽名的事件處理程序的新存根)。

請注意,名稱參數無關(使用任何你想要的),只有類型很重要。

+0

我試着讓Visual Studio爲他做,但它不這樣做。我去了文檔,但我無法找到參數!這裏的鏈接http://msdn.microsoft.com/en-us/library/microsoft.kinect.kinectsensor.allframesready.aspx – virgula24

+0

也如果我試圖改變參數,視覺工作室給了我一個錯誤,那是唯一的信息我可以得到 – virgula24

+0

@ virgula24該頁面列出委託類型爲'EventHandler '。您可以查看'EventHandler'委託以獲取更多信息。在這種情況下,它是一個通用委託,其第一個參數是對象,who的第二個參數是泛型參數的類型,即「AllFramesReadyEventArgs」,所以這是第二個參數。你不能改變簽名;它需要匹配它是處理程序的事件。 – Servy

1

在Visual Studio中:右鍵單擊事件名稱 - >轉到定義。這會帶你參加活動。右鍵單擊處理程序類名 - >轉到定義。這將帶您到委託的定義,它給你你的方法簽名。

這可能會略微取決於您的Visual Studio設置。

+0

這工作也是!謝謝! – virgula24

1

事件具有委託類型。委託類型定義處理程序方法的簽名。因此,查看事件委託類型,您將找到所需的簽名。

4

在Visual Studio中執行此操作的手動方法是鍵入this.sensor.ColorFrameReady +=,然後按Tab兩次以查看默認實現是什麼。對於您想要查看簽名的任何其他活動/代表,請同樣做。

這樣做並不要求你有事件和委託(你可能沒有)的源代碼。

在我多年的C#編程中,我從來沒有找到更好的方式來做到這一點。 (我實際上沒有尋找爲解決方案,但沒有任何明顯的。)

+0

非常感謝,它的工作。如果我試圖鍵入this.SensorColorFrameReady; (沒有現有的功能),並讓Visual Studio自動生成它不起作用! – virgula24

+0

@ virgula24當然可以。如果你輸入了,你可以右鍵點擊 - >生成 - >方法存根 – Servy

+0

@ virgula24如果我的回答對你有幫助,那麼請勾選它作爲正確的答案。 – Jashaszun

相關問題