共用方式為


巢狀控件結構 (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 編譯程式會偵測這類重疊的控制結構,併發出編譯時間錯誤訊號。

另請參閱