Reputation: 1618
On WinForm
there is TreeView
control.
In AfterSelect
event is private field selectedFolder
updated.
For event OnKeyDown
for Delete
key is event handler implemented that interacts data access layer : selectedFolder
is passed as parameter to method DeleteFolder
. The selected node of TreeView
is also removed
Code has following issue: it works properly only if DeleteFolder
called first:
DeleteFolder
(selectedFolder
) // selectedFolder is OK#.SelectedNode.Remove
If I try :
#.SelectedNode.Remove
// AfterSelect
is called. selectedFolder is now parent nodeDeleteFolder
(selectedFolder
) // selectedFolder is wrongAs I mentioned this code has bad smell. Is not it?
Should I make Pull down
refactoring to make selectedFolder
local variable. AfterSelect
event handler should be removed.
selectedFolder
local var based on selected node (code from AfterSelect
event handler)#.SelectedNode.Remove
DeleteFolder
(selectedFolder
)In this case is not depended on call order of 2.
and 3.
.
Upvotes: 0
Views: 57
Reputation: 26446
In the KeyDown
event handler you already access the TreeView
when removing the node, so yes I would definitely grab the folder name from the node before performing the other two operations, even if the call order did not matter in the first place.
Upvotes: 1