2010-02-09 267 views
2

在我們的WPF應用程序,我們正在把事件在我們窗口的構造是這樣的:刪除事件處理程序

AddHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent); 

     this.Closing += new System.ComponentModel.CancelEventHandler(WindowF_Closing); 
     this.Loaded += new RoutedEventHandler(WindowF_Loaded); 

這是個好主意,在最後的活動,刪除這些事件使窗口被配置爲:

RemoveHandler(Keyboard.KeyUpEvent, (KeyEventHandler)HandleKeyDownEvent); 

     this.Closing -= new System.ComponentModel.CancelEventHandler(WindowF_Closing); 
     this.Loaded -= new RoutedEventHandler(WindowF_Loaded); 

回答

6

如果事件的發佈者的壽命比訂戶長,你只需要明確地移除事件處理程序。

對您而言,ClosingLoaded事件的發佈者是窗口本身,因此無需退訂事件。鍵盤,但是會很長一段時間,所以退訂KeyUpEvent是一個好主意。