您可以將控件語句放在其他控件語句內,例如 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 編譯程式會偵測這類重疊的控制結構,併發出編譯時間錯誤訊號。