我增加了一個事件到用戶控件,我調用用戶控件的消費窗口時,編譯器如何生成事件處理程序代碼?
我的問題是:當我們通過IDE分配事件處理程序編譯器生成什麼樣的代碼?
因此,我也可以使用類似的東西來自動在運行時編寫事件處理程序。
我知道我們可以寫一個事件處理程序,如在這裏我寫我的事件處理程序:
SearchControl.SearchChangedEvent += new RoutedEventHandler(SearchControl_SearchChanged);
在這種情況下,拋出的錯誤是,沒有超載匹配,所以我嘗試做同樣的事情編譯器通過代碼完成。編譯器如何自動知道參數?
編輯:解決方案。
我發現我在那裏這篇文章中混淆關注的領域:http://msdn.microsoft.com/hi-in/magazine/cc785480%28en-us%29.aspx
在「路由事件概述」節中,作者寫道:
看到這一點,去了構造函數 類,在 InitializeComponent方法調用右鍵單擊,然後選擇 轉到從 背景menu.The編輯器將顯示一個 生成的代碼文件定義(用命名爲 約定.i.g.cs或.i.g.vb) 包含通常在編譯時生成的代碼 。
我發現後面的代碼生成了!
#line 6 "..\..\Window1.xaml"
this.myButton.Click +=
new System.Windows.RoutedEventHandler(
this.myButton_Click);
謝謝,對於那些與問題陳述有點混淆的人。我希望現在能夠說清楚(這是我直到找到解決方案時才解釋問題的原因:)
感謝盲目,,,我現在得到什麼編譯器...... 有沒有辦法看到編譯生成的類文件(如果有的話)?想想看過類似的東西,雖然記不起來...... – 81967 2009-08-29 12:06:22
如果你的意思是ildasm.exe,它在你的'C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin'文件夾中,你運行它,選擇你編譯的二進制文件,它會爲你反彙編。對不起,如果這不是你要求的,你的問題有點不清楚。 – Blindy 2009-08-29 12:14:11
感謝Blindy的幫助......我一定會在遇到它時告訴你答案。 – 81967 2009-08-29 12:35:20