嵌套控件结构 (Visual Basic)

可以将控制语句放入其他控制语句内,例如 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时,将突出显示构造中的所有实例IfThenElseIfElseEnd 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 编译器检测此类重叠的控制结构,并发出编译时错误信号。

另请参阅