在WinForm
上有TreeView
控件。
在AfterSelect
事件中,私有字段selectedFolder
已更新。
对于OnKeyDown
密钥的事件Delete
,实现了与数据访问层交互的事件处理程序:selectedFolder
作为参数传递给方法DeleteFolder
。 TreeView
的所选节点也已删除
代码存在以下问题:仅在DeleteFolder
首先调用时才能正常运行:
DeleteFolder
(selectedFolder
)// selectedFolder没问题#.SelectedNode.Remove
如果我尝试:
#.SelectedNode.Remove
// AfterSelect
被调用。 selectedFolder现在是父节点DeleteFolder
(selectedFolder
)// selectedFolder 错误 正如我提到的,这段代码有难闻的气味。不是吗?
我是否应该Pull down
重构以生成selectedFolder
局部变量。 AfterSelect
事件处理程序应 已删除。
selectedFolder
本地var(来自AfterSelect
事件处理程序的代码)#.SelectedNode.Remove
DeleteFolder
(selectedFolder
)在这种情况下,不依赖于2.
和3.
的通话顺序。
答案 0 :(得分:1)
在KeyDown
事件处理程序中,您在删除节点时已经访问了TreeView
,所以是的,我肯定会在执行其他两个操作之前从节点中获取文件夹名称,即使呼叫顺序首先无关紧要。