可以将控制语句放入其他控制语句内,例如 If...Then...Else
循环中的 For...Next
块。 放入另一个控制语句内的控制语句称为嵌套语句。
嵌套级别
Visual Basic 中的控件结构可以嵌套到任意数量的级别。 通过缩进每一个结构的主体,使嵌套结构更易于阅读是常见的做法。 集成开发环境 (IDE) 编辑器会自动执行此作。
在以下示例中,该过程 sumRows
将矩阵的每一行的正元素加在一起。
Public Sub sumRows(ByVal a(,) As Double, ByRef r() As Double)
Dim i, j As Integer
For i = 0 To UBound(a, 1)
r(i) = 0
For j = 0 To UBound(a, 2)
If a(i, j) > 0 Then
r(i) = r(i) + a(i, j)
End If
Next j
Next i
End Sub
在前面的示例中,第一个 Next
语句关闭内部 For
循环,最后 Next
一个语句关闭外部 For
循环。
同样,在嵌套 If
语句中,语句 End If
会自动应用于最近的前 If
一语句。 嵌套 Do
循环的工作方式类似,最内层 Loop
的语句与最 Do
内层的语句匹配。
注释
对于许多控件结构,单击关键字时,将突出显示结构中的所有关键字。 例如,在If
构造中点击If...Then...Else
时,将突出显示构造中的所有实例If
、Then
、ElseIf
、Else
和End If
。 若要移动到下一个或上一个突出显示的关键字,请按 Ctrl+Shift+向下键或 Ctrl+Shift+向上键。
嵌套不同类型的控制结构
可以在另一种类型的控制结构中嵌套一种控制结构。 以下示例在With
循环内使用For Each
块,并在If
块内嵌套With
块。
For Each ctl As System.Windows.Forms.Control In Me.Controls
With ctl
.BackColor = System.Drawing.Color.Yellow
.ForeColor = System.Drawing.Color.Black
If .CanFocus Then
.Text = "Colors changed"
If Not .Focus() Then
' Insert code to process failed focus.
End If
End If
End With
Next ctl
重叠控件结构
不能重叠控件结构。 这意味着任何嵌套结构都必须完全包含在下一个最内部的结构中。 例如,以下排列无效,因为 For
循环在内部 With
块终止之前终止。
Visual Basic 编译器检测此类重叠的控制结构,并发出编译时错误信号。