【发布时间】:2026-02-20 01:40:01
【问题描述】:
在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本地变量(代码来自AfterSelect事件处理程序) -
#.SelectedNode.Remove -
DeleteFolder(selectedFolder)
在这种情况下,不依赖于2.和3.的调用顺序。
【问题讨论】:
-
我不确定是否有人能理解您的问题并给出答案。请发布一些代码来解释它有什么问题。
标签: c# winforms treeview refactoring anti-patterns