Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A vezérlő utasításokat más vezérlő utasításokba is elhelyezheti, például egy If...Then...Else blokkot egy For...Next ciklusban. A másik vezérlőutasításba helyezett vezérlőutasítások beágyazottnak minősülnek.
Beágyazási szintek
A Visual Basic vezérlőstruktúrái tetszőleges számú szintre ágyazhatók. Gyakori gyakorlat a beágyazott struktúrák olvashatóbbá tétele az egyes elemek törzsének behúzásával. Ezt az integrált fejlesztési környezet (IDE) szerkesztője automatikusan elvégzi.
Az alábbi példában az eljárás sumRows összeadja a mátrix egyes sorainak pozitív elemeit.
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
Az előző példában az első Next utasítás bezárja a belső For hurkot, az utolsó Next utasítás pedig bezárja a külső For hurkot.
Hasonlóképpen, a beágyazott If utasításokban az End If utasítások automatikusan a legközelebbi előző If utasításra vonatkoznak. A beágyazott Do hurkok hasonló módon működnek, ahol a legbelső Loop utasítás a legbelső Do utasítással egyezik.
Megjegyzés:
Számos vezérlőszerkezet esetében, amikor egy kulcsszóra kattint, a szerkezet összes kulcsszója ki van emelve. Amikor például rákattint a If egy If...Then...Else konstrukción belül, a rendszer kiemeli a If, Then, ElseIf, Else és End If összes példányát a konstrukcióban. Ha a következő vagy az előző kiemelt kulcsszóra szeretne lépni, nyomja le a CTRL+SHIFT+LE NYÍL vagy a CTRL+SHIFT+FEL NYÍL gombokat.
Különböző vezérlőstruktúrák egymásba ágyazása
Egy vezérlőszerkezetet egy másik típusba ágyazhat be. Az alábbi példa használ egy With blokkot a For Each hurokban és beágyazott If blokkokat a With blokkon belül.
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
Átfedésben lévő vezérlőstruktúrák
Nem lehet átülepni a vezérlőstruktúrákat. Ez azt jelenti, hogy minden beágyazott struktúrát teljes mértékben a következő legbelső struktúrában kell tárolni. A következő elrendezés például érvénytelen, mert a hurok a For belső With blokk leállása előtt leáll.
A Visual Basic fordító észleli az ilyen átfedésben lévő vezérlőstruktúrákat, és fordítási időt jelző hibát jelez.