Geschachtelte Steuerungsstrukturen (Visual Basic)
Sie können Steuerelementanweisungen in anderen Steuerelementanweisungen platzieren, z. B. in einem If...Then...Else
-Block innerhalb einer For...Next
-Schleife. Eine in einer anderen Steuerelementanweisung platzierte Steuerelementanweisung gilt als geschachtelt.
Schachtelungsebenen
Steuerelementstrukturen in Visual Basic können auf beliebig vielen Ebenen geschachtelt werden. Es ist üblich, geschachtelte Strukturen lesbarer zu machen, indem der Text der einzelnen Strukturen eingerückt wird. Der IDE-Editor (integrierte Entwicklungsumgebung) nimmt dies automatisch vor.
Im folgenden Beispiel fügt die sumRows
-Prozedur die positiven Elemente jeder Zeile der Matrix zusammen.
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
Im vorherigen Beispiel schließt die erste Next
-Anweisung die innere For
-Schleife, und die letzte Next
-Anweisung die äußere For
-Schleife.
Ebenso gelten in geschachtelten If
-Anweisungen die End If
-Anweisungen automatisch für die nächsthöhere If
-Anweisung. Geschachtelte Do
-Schleifen funktionieren auf ähnliche Weise, wobei die innerste Loop
-Anweisung mit der innersten Do
-Anweisung übereinstimmt.
Hinweis
Wenn Sie bei vielen Steuerelementstrukturen auf ein Schlüsselwort klicken, werden alle Schlüsselwörter in der Struktur hervorgehoben. Wenn Sie beispielsweise in einer If...Then...Else
-Konstruktion auf If
klicken, werden alle Instanzen von If
, Then
, ElseIf
, Else
und End If
in dieser Konstruktion hervorgehoben. Um zum nächsten oder vorherigen hervorgehobenen Schlüsselwort zu gelangen, drücken Sie STRG+UMSCHALT+NACH-UNTEN-TASTE bzw. STRG+UMSCHALT+NACH-OBEN-TASTE.
Schachteln verschiedener Arten von Steuerelementstrukturen
Sie können eine Art von Steuerelementstruktur in einer anderen schachteln. Im folgenden Beispiel werden ein With
-Block innerhalb einer For Each
-Schleife und geschachtelte If
-Blöcke innerhalb des With
-Blocks verwendet.
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
Überlappende Steuerelementstrukturen
Steuerelementstrukturen dürfen sich nicht überlappen. Dies bedeutet, dass jede geschachtelte Struktur vollständig in der nächsten innersten Struktur enthalten sein muss. Beispielsweise ist die folgende Anordnung ungültig, da die For
-Schleife beendet wird, ehe der innere With
-Block beendet wird.
Der Visual Basic-Compiler erkennt solche überlappenden Steuerelementstrukturen und signalisiert einen Kompilierzeitfehler.