在VB.NET函數的開頭,我刪除了一個事件處理程序,並在函數的末尾再次添加它,因爲該函數的代碼會觸發這些事件,並且我不希望它們在該函數的持續時間內觸發。這通常起作用,但是我遇到了一些事件仍然被調用的情況,儘管我已經刪除了它。有時在功能開始時刪除它兩次會修復它,但有時無論我刪除它多少次,它仍然會觸發。任何想法可能會導致這種情況?事件處理程序不會自行刪除?
編輯
該代碼是在具有虛擬模式的datagridview表單。我想運行一些將觸發DataGridView的CellValueNeeded事件的操作,而不會觸發該事件(因爲它會干擾)。
Public Sub DoEventRaisingStuff()
RemoveHandler grid.CellValueNeeded, AddressOf grid_CellValueNeeded
'Do things that would trigger CellValueNeeded
AddHandler grid.CellValueNeeded, AddressOf grid_CellValueNeeded
End Sub
多次移除處理程序並不能防止事件被觸發,所以它似乎不會在別的地方偶然多次添加。
有沒有辦法找出哪些事件處理程序是活動的?
如果您發佈代碼,應該會更容易幫助您。 – 2010-07-05 20:14:18
這是真的,但我不知道要發佈什麼,因爲我不知道問題出在哪裏,程序非常大。我更想知道是否有其他人遇到過這個問題,以及爲他們解決了什麼問題。 – davidscolgan 2010-07-05 20:23:45
儘管如此,您至少可以發佈您正在討論的特定功能的代碼。 – 2010-07-06 03:24:23