嵌套的控件结构 (Visual Basic)

可以放置在其他控制语句中的控制语句,如 If...Then...Else 在 For...Next 循环块中。 控制语句放在另一个控制语句中称为 " 嵌套。

嵌套级别

,当需要,在 Visual Basic 的控制结构可以嵌套到多个级别。 是为了使嵌套结构可读通过缩进每个的主体。 集成 (IDE)开发环境 (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 循环类似地,并与最里层 Do 语句的最内层的 Loop 语句一起使用。

备注

对于许多控制结构,那么,当您单击某个关键字时,结构中的所有关键字都会突出显示。例如,那么,当您在 If...Then...Else 构造中单击时 If , 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 块停止之前。

无效嵌套和 with 结构的

无效嵌套示意图

Visual Basic 编译器检测到这样的重叠控制结构并发出编译时错误。

请参见

概念

决策结构 (Visual Basic)

循环结构 (Visual Basic)

其他控件结构 (Visual Basic)

其他资源

控制流 (Visual Basic)