2015-05-07 47 views
0

WinFormTreeView控件。事件處理程序依賴於呼叫指令

AfterSelect事件是私人字段selectedFolder已更新。

對於事件OnKeyDownDelete關鍵是事件處理程序實現該交互數據訪問層selectedFolder作爲參數傳遞到方法DeleteFolder。該選擇的節點TreeView也將被刪除

守則以下問題:它工作正常只有當DeleteFolder先叫:

  1. DeleteFolderselectedFolder)// selectedFolder正常
  2. #.SelectedNode.Remove

如果我嘗試:

  1. #.SelectedNode.Remove // AfterSelect被調用。 selectedFolder現在是父節點
  2. DeleteFolderselectedFolder)// selectedFolder是錯誤

正如我提到的這個代碼有難聞的氣味。是不是?

我應該讓Pull down重構使selectedFolder局部變量。 AfterSelect事件處理程序應該是刪除

  1. 填充selectedFolder局部變量基於選擇的節點上(從AfterSelect事件處理程序代碼)
  2. #.SelectedNode.Remove
  3. DeleteFolderselectedFolder

在這種情況下,不依賴於的2.呼叫順序和3.

+0

我不確定有人能夠理解你的問題並提出答案。請張貼一些代碼來解釋它有什麼問題。 –

回答

1

KeyDown事件處理程序,你已經從該節點執行其他兩個操作之前訪問TreeView刪除節點時,所以是我肯定會搶在文件夾名稱,即使調用順序並沒有在第一個問題放置