我有一个相当大的If
声明。
If Node1.IsSelected Then
CrumbBar1.SelectedItem = HomeNode
' Main week views
ElseIf Node2.IsSelected Then
CrumbBar1.SelectedItem = wk1
ElseIf Node3.IsSelected Then
CrumbBar1.SelectedItem = wk2
ElseIf Node4.IsSelected Then
CrumbBar1.SelectedItem = wk3
ElseIf Node5.IsSelected Then
CrumbBar1.SelectedItem = wk4
' Week 1
ElseIf Node6.IsSelected Then
CrumbBar1.SelectedItem = mon1
ElseIf Node7.IsSelected Then
CrumbBar1.SelectedItem = tue1
ElseIf Node8.IsSelected Then
CrumbBar1.SelectedItem = wed1
ElseIf Node9.IsSelected Then
CrumbBar1.SelectedItem = thu1
ElseIf Node10.IsSelected Then
CrumbBar1.SelectedItem = fri1
' Week 2
ElseIf Node11.IsSelected Then
CrumbBar1.SelectedItem = mon2
ElseIf Node12.IsSelected Then
CrumbBar1.SelectedItem = tue2
ElseIf Node13.IsSelected Then
CrumbBar1.SelectedItem = wed2
ElseIf Node14.IsSelected Then
CrumbBar1.SelectedItem = thu2
ElseIf Node15.IsSelected Then
CrumbBar1.SelectedItem = fri2
' Week 3
ElseIf Node16.IsSelected Then
CrumbBar1.SelectedItem = mon3
ElseIf Node17.IsSelected Then
CrumbBar1.SelectedItem = tue3
ElseIf Node18.IsSelected Then
CrumbBar1.SelectedItem = wed3
ElseIf Node19.IsSelected Then
CrumbBar1.SelectedItem = thu3
ElseIf Node20.IsSelected Then
CrumbBar1.SelectedItem = fri3
' Week 4
ElseIf Node21.IsSelected Then
CrumbBar1.SelectedItem = mon2
ElseIf Node22.IsSelected Then
CrumbBar1.SelectedItem = tue2
ElseIf Node23.IsSelected Then
CrumbBar1.SelectedItem = wed2
ElseIf Node24.IsSelected Then
CrumbBar1.SelectedItem = thu2
ElseIf Node25.IsSelected Then
CrumbBar1.SelectedItem = fri2
Else
CrumbBar1.SelectedItem = HomeNode
End If
我知道Select Case
语句,但这个If
语句是否可以使用一个简化?
我在大学期间使用Delphi教学,案例选择仅适用于单个字符和整数。所有/大多数语言都是一样的吗?
为了让人放心我会将所有节点和CrumbBar1
重命名为更有意义的东西,它们只是临时名称。
节点是TreeView
控件的一部分,CrumbBar
是一个类似于Windows资源管理器中的组件,因为它是地址栏。
答案 0 :(得分:2)
If
语句过长或过于复杂,对于重新审核您是如何解决问题的code smell都很好。
有很多方法可以重构,我必须看到更多的原始代码才能真正理解你在这里做了什么。 (什么是mon1
,mon2
- 对象?字符串?)
考虑将您放入Crumbar1.SelectedItem
的所有项目存储到数组中。然后,您可以执行CrumbBar.SelectedItem = items[x]
之类的操作,其中 x 是TreeView中所选项目的索引。 (或者,在TreeView OnSelectedItem
事件中执行所有这些操作。)
如果您发布了更多代码或有关您要解决的问题的更多详细信息,我们很乐意使用更完整的代码解决方案更新我的答案。